标签: sqlcmd

不使用-U和-P选项的哪个用户帐户正在T-SQL脚本中运行SQLCMD?

我在T-SQl脚本中使用sqlcmd将文本文件写入网络位置。但是,由于对网络文件夹的访问权限,SQLCMD无法写入该位置。SP正在我的用户帐户下运行,该用户帐户可以访问网络文件夹。

如果未在TSQL脚本中指定-U和-P选项,请您能帮我在哪个帐户下运行sqlcmd?

sql sql-server sqlcmd

1
推荐指数
1
解决办法
3589
查看次数

sqlcmd - 如何显示所有设置选项设置值

sqlcmd中显示所有设置选项及其相关设置的命令是什么?

例如,如何显示nocount的当前值?

set
set nocount
set nocount ?
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2005 sqlcmd

1
推荐指数
1
解决办法
2347
查看次数

SQL Server:INSERT / UPDATE / DELETE失败,因为以下SET选项具有错误的设置:'QUOTED_IDENTIFIER'

我有一个比较尴尬的问题:

现在有两个星期,每当我使用SQL脚本更新/创建存储过程后,运行这些存储过程时,它们都会因上述错误而失败。

其他有关此问题的帖子对我的情况没有帮助。

以下是一些参数,有助于排除在我的情况下不适用的常见解决方案:

  1. 我的存储过程脚本可在笔记本电脑(SQL Server 2012,Windows Server 2008 R2)上完美运行。

  2. 我的存储过程脚本可以在任何其他计算机(安装了SQL Server 2012的构建计算机;安装了SQL Server 2005的TEST服务器和安装了SQL Server 2005的PROD服务器)上正确创建存储过程。但是,存储过程将不会在我的任何其他机器上运行。

  3. 我正在机器上使用生产SQL Server(SQL Server 2005)的数据库备份(就像这里的任何其他机器一样)。

  4. 即使是最基本的存储过程也会失败(例如DELETE myTable WHERE ID = @delID)。

  5. 在我检查过的每个SQL Server安装中OFF,在服务器级别和数据库级别上,带引号的标识符都设置为(!)。那么,为什么我的存储过程突然需要将此选项设置为ON

  6. SQLCMD用来运行脚本。这使我可以选择在USE语句中动态设置服务器实例的数据库名称。

  7. 我的脚本只包含一个USE语句,紧接在ALTER PROCEDURE; 之后。或者IF EXISTS (...) DROP PROCEDURE ... GO; CREATE PROCEDURE ...

这一切已经工作了好几年,但是自两个星期前以来,突然用我的脚本创建的存储过程突然失败了。

我知道我可以在脚本中手动设置QUOTED_IDENTIFIERON-但我不想这样做。这里有问题。我想知道那是什么问题。

这里发生了什么事?

sql-server stored-procedures sqlcmd quoted-identifier

1
推荐指数
1
解决办法
1209
查看次数

使用 SQLCMD 的全局临时表

在 SSMS 中,我可以在一个批次中创建一个全局临时变量并在另一个批次中使用它。像这样:

CREATE TABLE ##temp (col1 INT)
GO

DROP TABLE ##temp
GO
Run Code Online (Sandbox Code Playgroud)

使用 SQLCMD,我在一次调用中创建了一个全局临时表,而在第二次调用中它不存在。

sqlcmd -S localhost -d tempdb -E -Q "create table ##temp (col1 int)"

sqlcmd -S localhost -d tempdb -E -Q "drop table ##temp"
Msg 3701, Level 11, State 5, Server VATLLXT7LGBARE2, Line 1
Cannot drop the table '##temp', because it does not exist or you do not have permission.
Run Code Online (Sandbox Code Playgroud)

在服务器重置之前,全局临时表不应该保留吗?

sql-server sqlcmd

1
推荐指数
1
解决办法
2039
查看次数

SQLCMD、BCP - 存储过程不存在

我正在尝试使用“Hello World”作为概念证明,sqlcmd但我很难:

在此处输入图片说明

命令:

 sqlcmd 'cmd.exe'
Run Code Online (Sandbox Code Playgroud)

错误:

找不到存储过程“sqlcmd”。

我在 BCP 上遇到了类似的问题:

 bcp "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable" 
Run Code Online (Sandbox Code Playgroud)

找不到存储过程“bcp”。

这是一台 SQL Server 2014 机器。这是怎么回事,我该如何解决?

sql-server bcp sqlcmd sql-server-2014

1
推荐指数
1
解决办法
3499
查看次数

如何将此sqlcmd脚本转换为Invoke-Sqlcmd脚本?

我有一个设计为由sqlcmd执行的SQL脚本,以及一个使用正确参数执行sqlcmd的Command脚本.

我想将Command脚本转换为使用Invoke-Sqlcmd而不是sqlcmd 的PowerShell脚本.

SQL脚本,Command脚本和新的PowerShell脚本都存在于目录中C:\Users\iain.CORP\SqlcmdQuestion.

SQL脚本

调用SQL脚本ExampleQuery.sql.它选择一个字符串文字.字符串文字的值由sqlcmd在运行时设置为ComputerNamesqlcmd脚本变量的值.代码如下所示:

SELECT '$(ComputerName)';
Run Code Online (Sandbox Code Playgroud)

命令脚本

命令脚本被调用ExecQuery.cmd.它调用sqlcmd来执行ExampleQuery.sql并将脚本变量ComputerName的值设置为环境变量的值COMPUTERNAME.代码如下所示:

sqlcmd -i ExampleQuery.sql -v ComputerName = %COMPUTERNAME%
Run Code Online (Sandbox Code Playgroud)

当我打开命令提示符时,默认工作目录是C:\Users\iain.CORP.我将更改到包含文件的目录,然后运行命令脚本:

cd C:\Users\iain.CORP\SqlcmdQuestion
ExecQuery.cmd
Run Code Online (Sandbox Code Playgroud)

我看到这个输出:

---------
SKYPC0083

(1 rows affected)
Run Code Online (Sandbox Code Playgroud)

该脚本成功选择sqlcmd设置的字符串文字.

PowerShell脚本

PowerShell脚本称为ExecQuery.ps1.它应该与命令脚本一样,使用Invoke-Sqlcmd而不是sqlcmd.代码如下所示:

Add-PSSnapin SqlServerCmdletSnapin100
Add-PSSnapin SqlServerProviderSnapin100

Invoke-Sqlcmd -InputFile 'ExampleQuery.sql' -Variable "ComputerName = $Env:COMPUTERNAME"
Run Code Online (Sandbox Code Playgroud)

当我打开PowerShell提示符时,默认工作目录是Z:\.我切换到包含文件的目录,并运行PowerShell脚本:

cd C:\Users\iain.CORP\SqlcmdQuestion
.\ExecQuery.ps1
Run Code Online (Sandbox Code Playgroud)

我看到这个输出:

Invoke-Sqlcmd : Could not find file 'Z:\ExampleQuery.sql'.
At C:\Users\iain.CORP\SqlcmdQuestion\ExecQuery.ps1:4 char:14
+ Invoke-Sqlcmd …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server powershell cmd sqlcmd

0
推荐指数
1
解决办法
6739
查看次数

批处理文件中的 SQLCMD 错误。无效的文件名

    echo off
if "%4" == "" goto usage
cd %3
mkdir Logs
echo Logs can be found in %3\Logs
echo 
goto %4

:smmdsp

echo Updating %2..xyz table on %1
sqlcmd -S %1 -E -p -e -d %2 -i "%3\xyz.SQL" > %3\Logs\xyz.SQL.log
goto done

:usage
echo.
echo Usage
echo.
echo where SqlServer = SQL Server name
echo       Database = configuration database
echo       InstallPath = path to the software update files
echo       Feature = Feature to update 
echo.
:done
Run Code Online (Sandbox Code Playgroud)

如果我在 C 盘 …

sql batch-file sqlcmd

0
推荐指数
1
解决办法
1万
查看次数

在 PowerShell 中通过 SQLCMD 连接到 localdb 时遇到问题 - 服务器实例名称是什么?

SQL Server 新手 - 我正在尝试使用 SQLCMD 实用程序通过 PowerShell 访问我的计算机上的 localdb\MSSQLLocalDB 服务器。我使用的是 PowerShell v5、.NET v5.0,服务器名称是(localdb)\MSSQLLocalDB我在 Microsoft SQL Server Management Studio 2014 中连接到它时的名称。

PS C:\> sqlcmd -S localdb\MSSQLLocalDBPS C:\> sqlcmd -S .\localdb\MSSQLLocalDB导致此错误:

Sqlcmd:错误:适用于 SQL Server 的 Microsoft ODBC 驱动程序 11:SQL Server 网络接口:定位指定的服务器/实例时出错 [xFFFFFFFF]。

我在 Management Studio 中查询了服务器名称,并在上面的命令SELECT @@ServerName中使用了该名称-S,并得到了相同的错误。

PS C:\> sqlcmd -S localdb给出这个错误:

Sqlcmd:错误:适用于 SQL Server 的 Microsoft ODBC 驱动程序 11:命名管道提供程序:无法打开与 SQL Server 的连接 [53]

其他注意事项:我可以使用以下连接字符串连接到服务器并在 C# 控制台应用程序中使用名为testdb01的数据库:System.Data.SqlClient

"Data Source=(localdb)\\mssqllocaldb;Initial …
Run Code Online (Sandbox Code Playgroud)

sql-server powershell sqlcmd localdb

0
推荐指数
1
解决办法
2846
查看次数

错误 /dev/tty: 在 docker 内安装 sqlcmd 时没有这样的设备或地址

我想在我的 docker 映像中安装 sql cmd。我的 dockerfile 有这些命令来安装 sqlcmd (centos 7 基本映像)

RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
RUN yum remove mssql-tools unixODBC-utf16-devel
RUN yum install -y unixODBC-devel mssql-tools
Run Code Online (Sandbox Code Playgroud)

以下是 docker 构建日志

Transaction test succeeded
Running transaction
  Updating   : libcom_err-1.42.9-17.el7.x86_64                             1/14
  Installing : unixODBC-2.3.7-1.rh.x86_64                                  2/14
  Updating   : libss-1.42.9-17.el7.x86_64                                  3/14
  Installing : e2fsprogs-libs-1.42.9-17.el7.x86_64                         4/14
  Installing : e2fsprogs-1.42.9-17.el7.x86_64                              5/14
  Updating   : 1:openssl-libs-1.0.2k-19.el7.x86_64                         6/14
  Installing : 1:make-3.82-24.el7.x86_64                                   7/14
  Installing : 1:openssl-1.0.2k-19.el7.x86_64                              8/14
/var/tmp/rpm-tmp.8S1dKq: line 17: /dev/tty: No such device or address
error: %pre(msodbcsql17-17.5.2.1-1.x86_64) scriptlet failed, …
Run Code Online (Sandbox Code Playgroud)

centos sqlcmd tty docker dockerfile

0
推荐指数
1
解决办法
2790
查看次数

在 while 循环体内使用 sqlcmd 时无限循环

我有一个 bash 脚本,用于在while 循环sqlcmd体中从数据库获取数据:

#!/bin/bash
tmpfile=$(mktemp)
echo -e "1\n2" > tmpfile
echo "---------------content from the tmp file--------------"
cat tmpfile
echo "------------------------------------------------------"
while read -r line || [[ -n $line ]]
do
  echo "${line}"
  echo "   ------------sqlcmd operation start------------"
  sqlcmd -Q "set nocount on;select 'dummy'"  
  echo -e "   ------------sqlcmd operation done------------\n\n"
done < tmpfile
echo "-----------------------script done---------------------"
Run Code Online (Sandbox Code Playgroud)

预计会根据 file.txt 中的内容行进行交互,在本例中是两次,但实际上它将无限地交互第一行: 输出是无限的

我得到了关于如何从这里解决无限循环的答案,当使用 sqlcmd 时循环变量被固定为常量

此处Unexpected behavior of file描 述符和/或 I/O 流在 ksh 中使用 -i 选项(从文件读取 sql)运行 sqlcmd …

bash ksh sqlcmd

0
推荐指数
1
解决办法
214
查看次数

以静默方式安装sqlcmd以接受EULA

我正在尝试以静默模式安装sqlcmd,但我无法弄清楚如何自动接受EULA.我正在尝试安装的文件名为"MsSqlCmdLnUtils.msi"(从MS下载中心下载).这是我到现在为止所尝试的(与谷歌一起发现):

msiexec /i "MsSqlCmdLnUtils.msi" /passive AcceptEndUserLicenseAgreement=1
msiexec /i "MsSqlCmdLnUtils.msi" /passive ACCEPTEULA=1
msiexec /i "MsSqlCmdLnUtils.msi" /passive ACCEPT=1
msiexec /i "MsSqlCmdLnUtils.msi" /passive EULA=1
Run Code Online (Sandbox Code Playgroud)

以及"= yes"而不是"= 1"的所有组合

我得到的只是ERRORLEVEL 1603(错误1603:安装过程中发生了致命错误.)

有任何想法吗?

windows-installer sqlcmd silent-installer

-1
推荐指数
1
解决办法
4870
查看次数