2009-10-02 29 views
5

Khi tôi cố gắng sử dụng lệnh ghép ngắn Invoke-Sqlcmd từ SQL Server 2008 để thực thi truy vấn chứa biến kịch bản, ví dụ: $(MyVar), tôi nhận được ngoại lệ sau:Lệnh ghép ngắn Invoke-Sqlcmd ném ngoại lệ khi sử dụng tham số -Variable

Gọi-Sqlcmd: Tham chiếu đối tượng không được đặt thành thể hiện của đối tượng.

Đây là mã tôi đang cố chạy (được sao chép/dán từ the Books Online example chỉ với thông số kết nối được thêm).

$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'" 
Invoke-Sqlcmd -Query "SELECT `$(MyVar1) AS Var1, `$(MyVar2) AS Var2;" -Variable $MyArray -ServerInstance "localhost" -Database "master" -UserName "who" -Password "me" 

Nếu tôi thay $(MyVar1)$(MyVar2) trong -Query với 'x''y' sau đó nó chạy một cách hoàn hảo.

$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'" 
Invoke-Sqlcmd -Query "SELECT 'x' AS Var1, 'y' AS Var2;" -Variable $MyArray -ServerInstance "localhost" -Database "master" -UserName "who" -Password "me" 

Bất cứ ai có thể cho tôi biết lý do tại sao tính năng này không hoạt động?

Trả lời

4

Ok. Tôi đã đăng cùng một câu hỏi này trên diễn đàn SQL Server và, rõ ràng, đây là lỗi trong lệnh ghép ngắn PowerShell của SQL Server 2008 ... follow the thread here.

-1

Hãy thử một mình này: PS> $ myArray = "MyVar1 = 'Chuỗi1'", "MyVar2 = 'String2"

Bây giờ là: PS> $ myArray và PS> MyVar1

Bây giờ: PS> $ MyArray | get-member

PowerShell cho rằng bạn đã gán 2 đối tượng chuỗi cho $ MyArray, không có gì khác. Cách tiếp cận này không dẫn đến việc xác định các biến $ MyVar1 và $ MyVar2 thành PowerShell.

Xin lỗi, tôi không thể cháy lên SQL2008 VM của tôi ngay bây giờ để nhận xét về các bộ phận khác ...

+0

Theo ví dụ Books Online, giao 2 chuỗi vào mảng là chính xác những gì cần phải xảy ra kể từ khi lệnh được mong đợi một loạt các nhiệm vụ khác nhau. – joshuapoehls

Các vấn đề liên quan