SQL 网络接口,错误:25 - 连接字符串在 Powershell 中无效

use*_*661 7 sql powershell

$SQLconnection = New-Object System.Data.SqlClient.SqlConnection
$SQLconnection.ConnectionString = "Server = MySQLservername\MSSQLSERVER; Database = "MYSQLDB"; Integrated Security = True"
$SQLconnection.open()
Run Code Online (Sandbox Code Playgroud)

在 MSSQL 2012 中,有效。在 MSSQL 2005 中,获得 SQL 网络接口,错误:25 - 连接字符串无效。

如果仅在连接字符串中使用“Server = MySQLServername”,则有效。我确定实例名称是正确的。这是 SQL 2005 的错误吗?

小智 8

对于MS,您无法按名称连接到默认实例 MSSQLSERVER。您必须省略实例名称。我已经在 MS SQL 2008R2 和 2014 SP2 中验证了这个相同的“功能”。

您可能在 2012 年配置的某些内容启用了它,但我的默认设置不适用于它。


Cha*_*ler 1

您错误地构建了字符串,我很惊讶这对于任何版本都适用。连接字符串中间有“MYSQLDB”,并且没有转义带引号的字符串中的双引号。您可以通过运行以下两个命令来看到这一点:

$a = write-output "Server = MySQLservername\MSSQLSERVER; Database = "MYSQLDB"; Integrated Security = True" 
$b = write-output "Server = MySQLservername\MSSQLSERVER; Database = `"MYSQLDB`"; Integrated Security = True"
$a.gettype()
$b.gettype()
Run Code Online (Sandbox Code Playgroud)

第一行返回一个数组而不是字符串,因为分号被视为运行两个命令

只要记住在双引号字符串中转义双引号就可以了:

$SQLconnection.ConnectionString = "Server = MySQLservername\MSSQLSERVER; Database = `"MYSQLDB`"; Integrated Security = True"
Run Code Online (Sandbox Code Playgroud)