运行 使用 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
您将看到交互式提示。
然后输入你的指令:
USE pubs
GO
此外,您可以使用 sqlcmd
:
sqcmd -E -S MYPC\SQLEXPRESS
执行以下任一命令时:
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
您将看到交互式提示。 然后输入你的指令:
USE pubs
GO
此外,您可以使用 sqlcmd
:
sqcmd -E -S MYPC\SQLEXPRESS