下面,您会注意到我尝试从 Microsoft SQL Server 2008 的 64 位 Program Files 文件夹中调用一些 Windows 命令提示符命令
C:\Program Files\Microsoft SQL Server\100\Tools\Binn>SQLCMD -S "SQLI2B2" -d
"I2B2_CRC-DEV" -i "C:\SVN\ONT\SQL SERVER\DX_SQLSERVER.sql" -E
Run Code Online (Sandbox Code Playgroud)
HResult 0x2746,级别 16,状态 1 TCP 提供程序:现有连接被远程主机强制关闭。
Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:通信链接失败。
c:\Program Files\Microsoft SQL Server\100\Tools\Binn>
现在,我连接到的数据库(服务器)是 SQL Server 2008。“Microsoft SQL Server”文件夹下有几个目录。90、100、110 和 120。只有 100 和 110 拥有该.\Tools\Binn\SQLCMD.EXE文件。我注意到 中的以下驱动程序\\Control Panel\All Control Panel Items\Administrative Tools\Data Sources (ODBC)\Drivers\,所以我不知道客户端驱动程序是否适合我的服务器版本。
Name Version
SQL Server 6.01.7601.17514
SQL Server Native Client 10.0 2009.100.1600.01
SQL Server Native Client …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用下面的命令访问 Azure 中的数据库
sqlcmd -s tcp:DBNAME HERE.database.windows.net -U USERNAME -P PASSWORD
Run Code Online (Sandbox Code Playgroud)
我收到错误
Sqlcmd:错误:适用于 SQL Server 的 Microsoft ODBC 驱动程序 13:命名管道提供程序:无法打开与 SQL Server [2] 的连接。。Sqlcmd:错误:适用于 SQL Server 的 Microsoft ODBC 驱动程序 13:登录超时已过期。Sqlcmd:错误:适用于 SQL Server 的 Microsoft ODBC 驱动程序 13:建立与 SQL Server 的连接时发生网络相关或特定于实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。
有人经历过这个吗?我已经下载了最新版本的sqlcmd
我需要将大量数据导入我的 Azure 数据库,但由于 Management Studio 中的“导入数据”选项无法应对,因此我没有其他选项了。这是我尝试的第一个方法。在处理 250000 行中的 70000 行后,它就停止了,没有错误消息,这就是导致我尝试使用 BCP SQLCMD 的原因
保罗
我可以从DOS命令窗口通过sqlcmd连接到我的SQL Server数据库,但不能从Cygwin窗口连接到我的SQL Server数据库.来自DOS:
F:\Cygnus>sqlcmd -Q "select 'a test'" -S .\SQLEXPRESS
Run Code Online (Sandbox Code Playgroud)
一个测试
(1行受影响)
F:\Cygnus>
Run Code Online (Sandbox Code Playgroud)
================================================== ==
来自Cygwin:
$ sqlcmd -Q "select 'a test'" -S .\SQLEXPRESS
Run Code Online (Sandbox Code Playgroud)
HResult 0x35,Level 16,State 1
命名管道提供程序:无法打开与SQL Server的连接[53].Sqlcmd:错误:Microsoft SQL Native Client:建立与服务器的连接时发生错误.连接到SQL Server 2005时,此错误可能是由于在默认设置下SQL Server不允许远程连接这一事实.Sqlcmd:错误:Microsoft SQL Native Client:登录超时已过期.
我们使用Visual Studio数据库项目来控制数据库的模式.我们还想从数据库中编写某些数据(配置值等),因此我们使用自定义命令行实用程序将数据转储到插入脚本中.一个文件表示一个表的脚本数据.
有一个称为部署后脚本的SQL脚本,它在项目的Deploy命令之后自动执行.建议在这里链接其他脚本文件,我们想要链接我们的数据插入脚本.
说明说使用此命令从任意文件解析
SQLCMD :r <filename>
Run Code Online (Sandbox Code Playgroud)
问题是,我没有看到我的同事在从源代码控制下载它时如何使用它,因为:r命令的启动目录是devenv.exe(VS dev.env.)所在的位置.
我们是否正确处理使用正确工具从正确角度编写数据脚本的问题?如果是这样,那么我如何才能获得正在执行的部署后脚本文件的路径,或者如何在不将其路径硬编码到部署后脚本的情况下解析插入脚本?
目前我有以下批处理代码来读取1个用户名,并在sql中使用它
@echo on
cls
set userID=
for /F %%i in (UserID.txt) do set userID=%userID% %%i
sqlcmd -S server -d database -U username -P password -v userID=%userID%
-i "sqlQuery.sql" -s "," > "\output.csv" -I -W -k
Run Code Online (Sandbox Code Playgroud)
调用的SQL查询如下所示
SELECT userId, COUNT (*) AS number
FROM table
WHERE userId = '$(userID)'
GROUP BY userId
ORDER BY userId desc
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是,如果我在文本文件中有一个用户名列表,它将动态更改WHERE语句
WHERE userId = '$(userID1)' OR userId = '$(userID2)' etc....
Run Code Online (Sandbox Code Playgroud) 我有一个XML文件,我想用它来将静态数据加载到我的数据库中.最好,我想使用sqlcmd":r"进行文本替换,以便在我的sql脚本中将xml视为硬编码数据.
使用硬编码数据,我的脚本可以工作
--Working Code
DECLARE @XML XML
SET @XML = '
<clients>
<client>
<ClientNumber>ClientA</ClientNumber>
</client>
<client>
<ClientNumber>ClientB</ClientNumber>
</client>
</clients>
'
Run Code Online (Sandbox Code Playgroud)
我想做的是这样的事情:
DECLARE @XML XML
SET @XML = '
:r .\ClientData.xml
'
Run Code Online (Sandbox Code Playgroud)
ClientData.xml的内容与先前硬编码的xml文本相同.问题是sqlcmd解析器没有在测试替换上获取,而只是将值':r.\ ClientData.xml'放在我的xml变量中.
如果我尝试删除抽搐,我会收到以下错误:
Incorrect syntax near '<'.
Run Code Online (Sandbox Code Playgroud)
有什么办法可以强制sqlcmd在内部抽搐时执行,所以文本替换正确吗?
我正在使用SQLCMD来运行一个270 MB的.sql文件.脚本文件(.sql)是使用Red Gate SQL Data Compare同步向导生成的.由于内存不足,我无法从SSMS运行它.我登录到服务器并转到命令提示符,它会打开命令提示符
C:\ Users \用户USER1>
然后我输入
> C:\Users\USER1>SQLCMD -U sa -P PWD -d DATA_FEAT -i F:\SYNC\DATA-DATA_FEAT-20140709.sql -o F:\SYNC\DATA-DATA_FEAT-20140709result.txt
Run Code Online (Sandbox Code Playgroud)
但我明白了
Sqlcmd:错误:脚本错误.
我可以使用红门同步它而不会出错.红门运行相同的.sql文件
任何帮助
谢谢
我正在使用powershell和使用Invoke-SqlCmd.我能够将变量传递给SQL:
$variables = @( "MyVariable='hello'" )
Invoke-SqlCmd `
-ServerInstance 'localhost' `
-Database 'master' `
-Username 'matthew' `
-Password 'qwerty' `
-Query 'SELECT $(MyVariable) AS foo' `
-Variable $variables
Run Code Online (Sandbox Code Playgroud)
这让我回归正常hello.但是,如果我有一个包含equals(=)的值的变量:
$variables = @("MyVariable='aGVsbG8NCg=='") # base64 encoded 'hello'
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误:
用于为
Invoke-Sqlcmdcmdlet 定义新变量的格式无效.请使用'var = value'格式来定义新变量.
我找不到在任的任何文件sqlcmd或Invoke-SqlCmd上我应该如何正确逃生值.
如何将变量发送到sqlcmd/ Invoke-SqlCmd?
我刚刚通过Chocolatey重新安装了SQL Server Express 2014。该服务当前正在运行。
当我在CMD或Powershell中运行此命令时:
> sqlcmd -e -S .\SQLEXPRESS
1> sp_databases;
2>
Run Code Online (Sandbox Code Playgroud)
我没有输出,只是转到下一个提示行。
但是,当我使用这种样式时,会得到输出:
> sqlcmd -e -S .\SQLEXPRESS -Q "sp_databases;"
sp_databases;
DATABASE_NAME DATABASE_SIZE REMARKS
-------------------------------------------------------------------------------------------------------------------------------- ------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
master 7808 NULL
model 5312 NULL
msdb 37632 NULL
tempdb 2560 NULL
Run Code Online (Sandbox Code Playgroud)
这可能是什么原因?除了控制台的一些颜色更改外,我没有针对CMD或Powershell的特殊配置。