5

执行以下任一命令时:

osql -E -S ComputerName\InstanceName
osql -E -S ComputerName\InstanceName -i MyScript.sql -o MyOutput.rpt
osql -E -q "SELECT * FROM Northwind.dbo.Shippers"
osql -E -Q "SELECT * FROM Northwind.dbo.Shippers" -o MyOutput.rpt

我收到以下错误:

[SQL Server Native Client 10.0]SQL Server Network Interfaces: Connection
string is not valid [87].
[SQL Server Native Client 10.0]Login timeout expired
[SQL Server Native Client 10.0]A network-related or instance-specific error
has occurred while establishing a connection to SQL Server. Server is not
found or not accessible. Check if instance name is correct and if SQL Server
is configured to allow remote connections. For more information see SQL Server
Books Online.

但是,我可以毫无问题地SELECT从 SSMS 登录和运行查询。

如何使用 osql 对 SQL Server 2008 运行查询?

4

3 回答 3

5

您是否已将登录帐户设置为 SQL Server 中的用户?

我通常使用特定帐户和 SQL Server 登录而不是可信登录,然后只需在命令行上使用 -S、-D、-U 和 -P 选项指定数据库坐标:

osql -S %SERVERNAME% -U %USERNAME% -P %PASSWORD% -d %DBNAME% 

例如,如果您的服务器名称是 MyServer\SQL2008 并且您的用户名是 Foo 并且您的密码是 Bar 并且您的数据库是 MyDB,那么您将使用这个:

osql -S MyServer\SQL2008 -U Foo -P Bar -d MyDB 

然后继续选择其他选项。

如果您真的想使用您的受信任连接,您需要转到 SQL Server Management Studio,并确保将您当前的 Widows 登录添加为用户并授予对您的数据库的适当权限等。

在 SSMS 中,手动连接到您的服务器(可能是“sa”用户和密码),然后展开“安全”节点并查看登录信息。如果未列出您当前登录的 Windows 用户,您需要右键单击,添加新登录名,然后添加当前用户。

然后您应该能够使用受信任的连接运行。

于 2015-07-20T21:32:56.700 回答
4

您必须像这样在一行中运行所有命令

osql -E -S ComputerName\InstanceName -i MyScript.sql -o MyOutput.rpt

或者

osql -E -S ComputerName\InstanceName -Q "SELECT * FROM Northwind.dbo.Shippers" -o MyOutput.rpt

现在您必须查看是否可以登录 SQL Server,或者服务是否已启动,或者是否启用了 TCP/IP 协议

于 2015-07-21T01:18:10.207 回答
1

使用Server name:字段中的值作为ComputerName\InstanceName。(例如 MYPC\SQLEXPRESS) 类型:

osql -E -S MYPC\SQLEXPRESS

您将看到交互式提示。然后输入你的命令:

  1. USE pubs
  2. GO

此外,您可以使用sqlcmd

sqcmd -E -S MYPC\SQLEXPRESS
于 2020-01-02T02:04:00.027 回答