2012-09-09 34 views
1
$SQLconnection = New-Object System.Data.SqlClient.SqlConnection 
$SQLconnection.ConnectionString = "Server = MySQLservername\MSSQLSERVER; Database = "MYSQLDB"; Integrated Security = True" 
$SQLconnection.open() 

在MSSQL 2012中,工作。 在MSSQL 2005中,得到了SQL网络接口,错误:25 - 连接字符串无效。SQL网络接口,错误:25 - 连接字符串在Powershell中无效

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

+0

我相信术语“数据库”应该是“初始目录”。 –

回答

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() 

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

只记得为了逃避双重双引号-quoted字符串你会被罚款:

$SQLconnection.ConnectionString = "Server = MySQLservername\MSSQLSERVER; Database = `"MYSQLDB`"; Integrated Security = True" 
0

据我所知,它从来没有被引用的服务器或数据库名称连接字符串中的要求。您应该使用这个

$SQLconnection.ConnectionString = "Server=MySQLservername\MSSQLSERVER;Database=MYSQLDB;Integrated Security=True" 
2

如果提供的端口号数据库/实例,我得到了错误25时,我并没有建立连接字符串正确。

$SQLconnection.ConnectionString = "Server = MySQLservername.domain.ext\InstanceName, PORT; Database = `"MYSQLDB`"; Integrated Security = True" 

例如:

$SQLconnection.ConnectionString = "Server = SQL01v.fordco.prd\DBSYS, 1433; Database = CarsDB; Integrated Security = True" 
+0

请您检查一下我的编辑是否改变了您的帖子的含义?谢谢。 – nhahtdh

1

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

您可能在2012年配置了某些功能来启用它,但我的默认设置无法使用它。