标签: sqlcmd

如何从 ASP 页运行 sqlcmd.exe?

作为数据库修订控制(和自动安装)过程的一部分,我们需要能够在 ASP 页面内对各种 .sql 文件运行 sqlcmd.exe。我用来执行此操作的代码是:

Dim cmd : cmd = "sqlcmd -S " & DATABASE_SERVER & " -U " & DATABASE_UID & " -P " & DATABASE_PWD & " -d " & DATABASE_NAME & " -i """ & scriptPath & """ -b"
Dim wshShell : Set wshShell = Server.CreateObject("WScript.Shell")
Dim return : return = wshShell.Run(cmd, 0, True)
Run Code Online (Sandbox Code Playgroud)

我的代码可以在我的开发机器(运行 XP)上运行,但现在我已将其部署到 Windows 2003 服务器上,但它遇到了问题。问题是返回值始终为 1。如果我尝试让它运行批处理文件或我能想到的其他任何文件,也会发生这种情况(如果我将 cmd 的值更改为不存在的文件,它会崩溃)正如我所期望的那样)

我尝试添加 I_USR 和 I_WAM 以对 sqlcmd.exe 和 cmd.exe 都具有执行权限,但它仍然返回 1。如果我在服务器上打开命令提示符并执行“runas /user:servername\i_usr sqlcmd.exe " 工作正常,但从 …

sqlcmd windows-server-2003 asp-classic

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

禁用 SQLCMD 语法检查

我们有时会编写重命名表或列并具有其他复杂逻辑的数据端口脚本。我们还在 IF 语句中使用 SQL 来引用那些旧的列或表。我们有一个标准使用 IF 语句来使我们的 SQL 脚本多运行友好。

但是偶尔,即使 if 语句的计算结果为 false,包裹在块中的代码也会出错,我猜是因为语法检查。

if 1 = 0
begin

   select * from mydatabase.dbo.mytable; -- doesn't execute, but still errors because doesn't exist

end
Run Code Online (Sandbox Code Playgroud)

另一个奇怪的事情是它并不总是一致的,有时它工作正常。

有谁知道我是否可以通过脚本禁用这些类型的检查。

谢谢

笔记

我知道人们会说他们尝试过类似的情况并且没有出错。起初对我来说,它在 SSMS 中没有出错,但在 SQLCMD 中出错了。

sqlcmd MyTestScript.sql -r 1 -U user -P password
Run Code Online (Sandbox Code Playgroud)

然后我将 SSMS 置于 SQLCMD 模式 Query -> CMDMODE 并且它仍然没有给出错误。然后在重新运行几次后,它开始在两者中出错。

sql t-sql sql-server validation sqlcmd

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

无法批量设置IDENTITY_INSERT

案件

目前我正在研究数据库种子脚本,用sqlcmd.执行.例如这个脚本示例:

IF (SELECT COUNT(*) FROM Genders)=0
BEGIN
   PRINT N'Seeding table Genders...'

   SET IDENTITY_INSERT Genders ON
   GO

   INSERT INTO Genders (GenderId, Description) VALUES (0, 'Onbekend');
   INSERT INTO Genders (GenderId, Description) VALUES (1, 'Vrouw');
   INSERT INTO Genders (GenderId, Description) VALUES (2, 'Man');
   INSERT INTO Genders (GenderId, Description) VALUES (3, 'Onzijdig');
   INSERT INTO Genders (GenderId, Description) VALUES (4, 'Vrouwman');
   INSERT INTO Genders (GenderId, Description) VALUES (5, 'Manvrouw');

   SET IDENTITY_INSERT Genders OFF
END
GO
Run Code Online (Sandbox Code Playgroud)

问题

但是,如果我sqlcmd在SQL Server Management Studio中使用模式执行它,它会给我这个错误: …

sql t-sql sqlcmd identity-insert sql-server-2008

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

cmd.ExecuteNonQuery的i整数值从0开始为-1

这里我动态地在数据库中创建表.用户输入姓名作为他的愿望并选择语言radiobutton.所以问题是在执行cmd.ExecuteNonQuery之后,i整数从0开始变为-1.并且表明该表无法创建但是当我去数据库时它已经成功创建了.请让我知道我在哪里做错了.Thanx提前!!

protected void btnpaper_Click(object sender, EventArgs e)
    {
        try
        {                
                string conn = ConfigurationManager.ConnectionStrings["sqlconn"].ConnectionString;
                SqlConnection con = new SqlConnection(conn);
                con.Open();
                char[] arr = new char[] {'n','g','l','i','s','h'};
                string str = "CREATE TABLE " + Label1.Text.Trim() + 
                             txtpaperset.Text.Trim()+ rbtnEng.Text.TrimEnd(arr) +
                             "(" + "quesNo int NOT NULL PRIMARY KEY, " + 
                             "question varchar(1000) NOT NULL," + 
                             "ansA varchar(500) NOT NULL, " + 
                             "ansB varchar(500) NOT NULL, " + 
                             "ansC varchar(500) NOT NULL, " + 
                             "ansD varchar(500) NOT NULL, " + 
                             "rightAns varchar(50) NOT …
Run Code Online (Sandbox Code Playgroud)

c# asp.net sqlcmd

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

Microsoft SQL Server Native Client 10.0登录超时已过期

我有一个新安装的SQL Server 2008 R2 Express.我试图运行SQLCMD在本地(请注意局部),但我收到的错误:

命名管道提供程序:无法打开与SQL Server的连接[2]
Sqlcmd:错误:Microsoft SQL Serve Native Client 10.0:建立与SQL Server的连接时发生了与网络相关或特定于实例的错误.找不到服务器或无法访问服务器.检查实例名称是否正确以及SQL Server是否配置为允许远程连接.有关更多信息,请参阅SQL Server联机丛书..
Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:登录超时已过期.

为什么我不能让它运作?我已经尝试了一切.

sql sql-server sqlcmd sql-server-2008r2-express

5
推荐指数
2
解决办法
4万
查看次数

从SQL Server查询结果中删除列标题

我想从SQL Server查询输出中删除列标题.我做了搜索,但没有找到任何解决方案.我有一个查询,例如.

select cc.DepartmentID , cc.Name  from HumanResources.Department cc
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,我得到这样的输出.

ID  Name
12  Document Control
1   Engineering
16  Executive
14  Facilities and Maintenance
10  Finance
9   Human Resources
Run Code Online (Sandbox Code Playgroud)

我想从SQL Server的输出中删除ID和名称(列标题).

我将通过脚本运行此查询以生成csv文件.

编辑:

当我通过脚本运行查询时,我将csv文件作为输出,它看起来像这样.

#TYPE System.Data.DataRow           
ID  Name    
Run Code Online (Sandbox Code Playgroud)

更新:

我正在使用PowerShell脚本.

$Database = "temp"
$Server = "localhost"

$AttachmentPath = "output.csv"


# Connect to SQL and query data, extract data to SQL Adapter

$SqlQuery = "select cc.DepartmentID , cc.Name  from HumanResources.Department cc"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;Integrated Security = …
Run Code Online (Sandbox Code Playgroud)

sql-server powershell sqlcmd sql-server-2008

5
推荐指数
2
解决办法
5万
查看次数

从SQL Server创建zip文件

这是我用来创建.rar带有密码的文件的代码

DECLARE @source VARCHAR(1000),
        @destination VARCHAR(1000),
        @Command VARCHAR(1000)

SET @source = 'E:\Temp\testRar.txt'
SET @destination = 'E:\Temp\testRar.rar'

SET @Command = '"C:\Program Files\WinRAR\Rar.exe"  a -ep1 -pasd^ad ' +@destination+' '+@source

EXEC MASTER..xp_cmdshell @Command
Run Code Online (Sandbox Code Playgroud)

但是它设置asdad密码而不是密码asd^ad^符号将被忽略。为什么?

sql sql-server sqlcmd xp-cmdshell

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

sqlcmd 访问:带有特殊字符的密码

我尝试通过以下命令使用 sqlcmd 进行访问:

sqlcmd -U sa -P $test$ -S 主机名 -d db_test -i .\prova.sql > 升级.log

但登录失败。

我正确的密码,我认为是特殊字符的问题,在本例中是 $。

你有什么解决办法吗?

谢谢F。

sql sql-server authentication sqlcmd special-characters

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

在 Azure DevOps 发布管道中从 PowerShell 执行 SQLCMD.exe

我正在将我们的部署基础结构移植到 Azure DevOps(以前称为 Visual Studio Team Services),但我遇到了一个找不到任何好的解决方案的问题。

我们正在使用 EF Core Migrations,为了解决一些不相关的问题,我们需要在 SQLCmd 中动态包装 SQL 脚本,这很容易使用 PowerShell。

但是,当将我们的脚本作为发布管道中的常规 PowerShell 步骤执行时,它会失败,因为 SQLCMD.exe 不可用。并不奇怪 - 但我也找不到任何记录的安装方式。

是否有工具安装程序或一些类似的现成组件可以让我执行 PowerShell 脚本,该脚本调用 SQLCMD.exe(通过Invoke-SqlCmd)作为 Azure Devops 管道的一部分?如果没有,无论如何,最简单的方法是什么?

powershell sqlcmd azure-devops

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

无法在 Docker 上使用 SSMS 连接到 SQL Server

我遵循了 Microsoft 官方文档,并安装了 SQL Server Docker 映像

结果,我在 IP 地址 172.17.0.2 的 Docker 上运行了一个 SQL Server 映像

在此处输入图片说明

我还可以使用带有我的虚拟密码的 sqlcmd 轻松连接到它

在此处输入图片说明

问题是我无法通过 SSMS 连接到它:

Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

当然,在发布此问题之前,我阅读了其他 StackOverflow帖子,并且尝试了多次登录:

  • 本地主机,1433
  • 本地主机:1433
  • 172.17.0.2,1433
  • 等等...

如果 localhost 无法正常工作以及 docker 映像的 IP 地址,我该如何连接?

sql-server containers ssms sqlcmd docker

5
推荐指数
3
解决办法
3466
查看次数