执行以下任一命令时:
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运行查询?
答案 0 :(得分:4)
您是否已将您的登录帐户设置为SQL Server中的用户?
我通常使用特定帐户和SQL Server登录而不是Trusted Logins,然后只需在命令行上使用-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中,手动连接到您的服务器(也许是'用户和密码),然后展开"安全"节点并查看登录。如果您当前登录的Windows用户未列出,则您需要右键单击,添加新登录并添加当前用户。
然后您应该能够使用可信连接运行。
答案 1 :(得分:2)
您必须在一行中运行所有命令 像这样
before
或
osql -E -S ComputerName\InstanceName -i MyScript.sql -o MyOutput.rpt
现在您必须查看是否可以登录SQL Server,或者服务是否已启动,或者是否启用了TCP / IP协议
答案 2 :(得分:0)
使用服务器名称:字段中的值作为 ComputerName \ InstanceName 。 (例如,MYPC \ SQLEXPRESS) 类型:
osql -E -S MYPC\SQLEXPRESS
您将看到交互式提示。 然后输入您的命令:
USE pubs
GO
此外,您可以使用sqlcmd
:
sqcmd -E -S MYPC\SQLEXPRESS