8
$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 - 连接字符串无效。

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

4

7 回答 7

8

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

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

于 2017-08-01T11:47:19.450 回答
3

如果您的数据库/实例是在端口号上提供的,那么当我没有正确设置连接字符串时会收到错误 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"
于 2013-03-11T17:24:33.787 回答
1

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

$SQLconnection.ConnectionString = "Server=MySQLservername\MSSQLSERVER;Database=MYSQLDB;Integrated Security=True"
于 2012-10-02T09:48:31.120 回答
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()

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

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

$SQLconnection.ConnectionString = "Server = MySQLservername\MSSQLSERVER; Database = `"MYSQLDB`"; Integrated Security = True"
于 2012-09-09T14:21:04.547 回答
0

报价问题

(这里的答案建立在乍得早先给出的答案之上并与之相矛盾:SQL Network Interfaces, error: 25 - Connection string is not valid in Powershell

你似乎有一个引用问题。在较新版本的 PowerShell 控制台中,语法突出显示可以帮助您看到这一点。 语法高亮显示引用问题

所以版本 $a 将不起作用。要解决此问题,您必须更改引用。在 $b 或 $c 中。我更喜欢$c。

进一步阅读: https ://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules

屏幕截图为文本

$a = "Server = MySQLservername\MSSQLSERVER; Database = "MYSQLDB"; Integrated Security = True"
At line:1 char:57
+ ... ername\MSSQLSERVER; Database = "MYSQLDB"; Integrated Security = True"
+                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token 'MYSQLDB"; Integrated Security = True"' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

$b = "Server = MySQLservername\MSSQLSERVER; Database = `"MYSQLDB`"; Integrated Security = True"
$c = 'Server = MySQLservername\MSSQLSERVER; Database = "MYSQLDB"; Integrated Security = True'

$a

$b
Server = MySQLservername\MSSQLSERVER; Database = "MYSQLDB"; Integrated Security = True

$c
Server = MySQLservername\MSSQLSERVER; Database = "MYSQLDB"; Integrated Security = True
于 2022-01-03T14:25:41.160 回答
0

我有同样的错误并将 appsettings.json 更改为

"DefaultConnection": "Server=localhost; database=my-vue-starter-new;MultipleActiveResultSets=true;User Id=SA;Password=myPassword;"

在 linux 上很重要,服务器是 localhost,Id 自动成为 SA

欲了解更多信息:https ://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-ver15

如果您没有配置 mssql,另一件事可能会导致 gthat 问题,如果不配置则将 tcpport 启用为 1433 并尝试再次连接。

于 2021-01-04T13:24:42.083 回答
0

出现此错误的一种方法是,如果您将Network Profileis 设置为"Public". 它需要是"Private"

改变(或检查)。

点击开始->设置->网络和Internet

单击状态
单击更改连接属性
在网络配置文件下选择“私人”

于 2019-11-19T13:58:36.893 回答