Tôi có sqlcmd.exe
từ cả hai SQLServer 2008 và SQLServer 2012:Làm thế nào để kết nối với SQL Server LocalDB bằng cách sử dụng Invoke-Sqlcmd?
PS C:\> Get-Command sqlcmd.exe
Definition
----------
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.EXE
Bằng cách thay đổi $env:PATH
tôi buộc việc sử dụng sqlcmd.exe
từ SQL Server 2012:
PS C:\> $env:PATH = ($env:PATH -split ";" | Where-Object { $_ -notlike "*\Microsoft SQL Server\100\*" }) -join ";"
PS C:\> Get-Command sqlcmd.exe
Definition
----------
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.EXE
Các trường hợp mặc định của LocalDB được lên và chạy và được sở hữu bởi người dùng hiện tại:
PS C:\> sqllocaldb i v11.0
Name: v11.0
Version: 11.0.2318.0
Shared name:
Owner: DOMAIN\me
Auto-create: Yes
State: Running
Last start time: 12/06/13 18:17:57
Instance pipe name: np:\\.\pipe\LOCALDB#08EDBEF0\tsql\query
Bây giờ, tôi có thể execu te lệnh trên (localdb)\v11.0
sử dụng sqlcmd.exe
PS C:\> sqlcmd.exe -S "(localdb)\v11.0" -Q "select 1"
-----------
1
Nhưng khi cố gắng cùng với Invoke-Sqlcmd
tôi nhận được một lỗi kết nối:
PS C:\> Import-Module sqlps
PS C:\> Invoke-Sqlcmd -ServerInstance "(localdb)\v11.0" -Query "select 1"
Invoke-Sqlcmd : A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
gì tôi có thể làm gì để lmake Invoke-Sqlcmd
kết nối với (localdb)\v11.0
?
Điều thú vị là đủ, nó hoạt động từ PowerGUI và không thành công từ PowerShell. Tôi đã theo dõi cả hai quy trình với ProcessMonitor và cả hai nạp đúng mô-đun (C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ Tools \ PowerShell \ Modules \ SQLPS \ SQLPS.PSD1). Cả hai đều có thể kết nối với một cá thể "thông thường", chẳng hạn như SQLEXPRESS. – spaghettidba