运行 使用 osql 的查询

Running queries using osql

执行以下任一命令时:

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.

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

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

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

我通常使用特定帐户和 SQL 服务器登录而不是受信任的登录,然后只需在命令行上使用 -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' 用户和密码),然后展开 "Security" 节点并查看登录信息。如果您当前登录的 Windows 用户未列出,您需要右键单击,添加新登录名,然后添加您当前的用户。

那么您应该可以 运行 使用可信连接。

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

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服务器或者服务是否启动甚至TCP/IP协议是否启用

使用 服务器名称: 字段中的值作为 ComputerName\InstanceName。 (例如 MYPC\SQLEXPRESS) 类型:

osql -E -S MYPC\SQLEXPRESS

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

  1. USE pubs
  2. GO

此外,您可以使用 sqlcmd:

sqcmd -E -S MYPC\SQLEXPRESS