AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[sqlcmd](dba)

Martin Hope
lit
Asked: 2021-12-13 11:58:17 +0800 CST

哪个安装工具包安装 sqlcmd.exe?

  • 0

我最近不得不卸载 Visual Studio 2012 和 DTS,然后再次安装 VS 2017 和 DTS。之后,包含的目录sqlcmd.exe不在我的PATH变量中。我安装了以下。

vs_Professional-vs2017-15.9.41.exe
SSDT-Setup-ENU-vs2017-15.9.9.exe

应该安装这些套件中的任何一个sqlcmd.exe吗?如果没有,哪个工具会安装它?我需要一个可以与 SQL Server 2012+ 一起使用的。

sql-server sqlcmd
  • 2 个回答
  • 261 Views
Martin Hope
spinjector
Asked: 2021-09-02 08:28:15 +0800 CST

在 SSMS 中,IntelliSense 和 SQLCMD 模式是互斥的吗?

  • 2

在 SSMS 中,IntelliSense 和 SQLCMD 模式是互斥的吗?

启用 SQLCMD 模式后,有什么方法可以使 IntelliSense 工作?(我经常使用 SQLCMD)

我试图了解为什么 IntelliSense 在 SQLCMD 模式下被禁用,但是在 Google 搜索结果中它们的信息太多了,我找不到明显的答案。

我发现这个很好的讨论,但不是我问题的真正答案。

ssms sqlcmd
  • 2 个回答
  • 80 Views
Martin Hope
Reversed Engineer
Asked: 2021-03-04 03:13:23 +0800 CST

SQLCMD 是否“!!” Azure Data Studio 中的命令工作

  • 0

在 SQL Server Management Studio 中,可以在SQLCMD 模式下运行批处理命令,使用!! 命令。但是,在 Azure Data Studio 中,这似乎不起作用(SQLCMD 自2019 年 11 月版本 1.13.0起在 ADS 中可用),我以 Windows 管理员身份运行 ADS。

如何使用 SQLCMD 模式在 Azure Data Studio 中执行批处理命令? 我错过了什么,还是我需要阅读一些(稀缺)文档?

- 在 SQL Server 管理工作室中:

在 SQL Server Management Studio 中工作

- 在 Azure 数据工作室

在 ADS 中不起作用

sqlcmd azure-data-studio
  • 1 个回答
  • 1060 Views
Martin Hope
Dejan Dozet
Asked: 2020-12-27 03:24:02 +0800 CST

在 mssql 2019 中,sqlcmd 实用程序在哪里?

  • 1

我正在开发将静默部署 SQL 服务器实例的工具,我需要在安装后运行一些脚本,但我很难找到 SQLCMD 实用程序的位置。

例如,我使用这个:

FEATURES=SQLENGINE,SDK

但是安装完成后系统上没有SQLCMD。

它在哪里?

更新:

我设法创建了一个静默安装,其中包括 sqlcmd 工具:

FEATURES=SQLENGINE,工具

sql-server sqlcmd
  • 1 个回答
  • 1985 Views
Martin Hope
Shervin Rad
Asked: 2020-04-25 11:38:26 +0800 CST

如何查找本地 MS SQL Server 的列表?

  • 0

我查看了如何确定已安装的 SQL Server 实例及其版本?已经但是 CMD 什么都不返回:

C:\Windows\system32>sqlcmd -L

C:\Windows\system32>

但是在使用 Visual Studio (v2019) 时,我转到查看 > SQL Server 对象资源管理器,我看到两个带有系统数据库的 SQL Server 实例。一个称为 (LocalDB)\MSSQLLocalDB,另一个称为 (LocalDB)\ProjectsV13。

两者都使用 SQL Server 2016 (v13.0.4001)。使用它我也能够通过 SSMS 2018 进行连接。

我的问题是:为什么这些实例没有出现在命令行中?我可以删除其中一个服务器实例吗?为什么有两个?

我努力了:

  1. 我检查了我的服务,我只有 SQL Server VSS 写入。其他一切都与 SQL 无关。我在 SQL Server 配置管理器中查找,但那里的 SQL Server 服务也是空的。我检查了 C:\Program Files (x86)\Microsoft SQL Server\90\Shared 并且 sqlbrowser.exe 也不存在。

  2. 我刚刚尝试在 TCP 1433 和 UDP 1434 上设置入站和出站规则以允许连接。再次失败,cmd 没有返回任何内容。

  3. 我打开防火墙日志并在运行命令几次后检查了日志,但没有记录任何内容(成功或失败)。我打开了 powershell 并对我的 ip 和端口 1433 和 1434 进行了测试网络连接,但是 ping 失败了。仍然没有写入防火墙日志文件。

sql-server sqlcmd
  • 2 个回答
  • 2018 Views
Martin Hope
Andriy M
Asked: 2019-10-19 06:41:11 +0800 CST

运行多批处理脚本的 SQLCMD 中的会话 ID

  • 2

我的脚本包含多个GO关键字。我知道 SQLCMD 解释GO为批处理分隔符,因此代码不是作为单个块运行,而是分隔符(批处理)之间的每个部分单独运行。我的问题是,所有批次都在同一个会话中执行吗?

我尝试使用这样的简单脚本对此进行测试:

SELECT @@SPID
GO

SELECT @@SPID
GO

SELECT @@SPID
GO

然后我使用这个命令从命令行运行脚本

SQLCMD -S MyServer\Instance -E -i MyScript.sql

并得到这个输出:


------
    62

(1 rows affected)

------
    62

(1 rows affected)

------
    62

(1 rows affected)

它似乎肯定地回答了我的问题,但随后我再次运行脚本并得到完全相同的输出,即所有值都62再次出现。显然 SQLCMD 的两个单独执行不可能在同一个会话中运行,它们只是碰巧收到了相同的会话 ID。但这反过来又让我认为@@SPID单次运行返回相同的值可能并不一定意味着它是同一个会话。每个批次都可以在恰好接收到相同 ID 的不同会话中执行,类似于 SQLCMD 的不同执行在具有相同 ID 的不同会话中运行的方式。

因此,我的问题仍然存在:是否在同一会话中在 SQLCMD 中执行了多批相同的脚本?有没有办法确定这一点?

sql-server sqlcmd
  • 1 个回答
  • 196 Views
Martin Hope
SQLSean
Asked: 2019-06-27 03:55:27 +0800 CST

使用 Invoke-Sqlcmd 时如何本机返回输出?

  • 5

如何从 PowerShell Invoke-Sqlcmd 本地记录输出?

我正在使用 Invoke-Sqlcmd 循环遍历一组大型(50,000-90,000 个 SQL 文件,每个文件中有 1-10 个插入)小 SQL 插入语句集。大多数插入语句运行正确,但一些字符串太长,我得到“字符串或二进制数据将被截断”错误。

现在我正在使用 Start-Transcript 来捕获输出并识别有问题的插入语句,但 Start-Transcript 会捕获所有内容。我只想捕捉错误 - 或者 - 只捕捉 Invoke_Sqlcmd 语句输出。

如果这行得通(我相信它应该),我会准备好的:

Invoke-Sqlcmd -InputFile $sql -ServerInstance LocalHost -Database Test_DB -Credential $pwd -Verbose -OutputSqlErrors $true | Out-File -FilePath "C:\Temp\Errorlog.txt" -Append

或者,如果这有效:

Invoke-Sqlcmd -InputFile $sql -ServerInstance LocalHost -Database Test_DB -Credential $pwd -Verbose -OutputSqlErrors $true | Tee-Object -FilePath "C:\Temp\Errorlog.txt" -Append

但这些都不起作用。

我也尝试过这个怪物,但我根本没有得到任何错误:

$sqls = (Get-ChildItem -Path "I:\2019_06_24\_SQL"-Filter *.sql | Sort-Object -Property CreationTime).FullName
        foreach ($sql in $sqls)
            {
            $Error.Clear()
            try 
                {
                Invoke-Sqlcmd -InputFile $sql -ServerInstance LocalHost -Database Test_DB -Credential $pwd -Verbose -OutputSqlErrors $true
                }
            catch 
                {
                'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' | Out-File "C:\Temp\Errorlog.txt" -Append
                $sql | out-file -filepath "C:\Temp\Errorlog.txt" -Append
                $Error | out-file -filepath "C:\Temp\Errorlog.txt" -Append
                } 
            }

如何直接从 Invoke-Sqlcmd 语句记录?

powershell sqlcmd
  • 1 个回答
  • 4350 Views
Martin Hope
Yuri Makassiouk
Asked: 2019-05-04 02:53:06 +0800 CST

SQLCMD :connect 指令 - 如何指定连接协议?

  • 2

在脚本中我有指令

:connect DbServer

似乎如果我在 SQLCMD 中运行这个脚本(像这样:

sqlcmd -i script.sql

然后 sqlcmd 尝试使用命名管道进行连接(这不起作用)。我收到错误消息,指出命名管道提供程序无法连接。但是,如果我尝试通过在 -S 参数中指定其名称来连接到同一台服务器,它就可以正常工作。

有没有办法让 :connect 指令知道我正在尝试通过 TCP/IP 进行连接?

我尝试使用 :connect tcp:DbServer 无济于事。也尝试通过 IP 地址,结果相同。在这台机器上,我没有 SQL Server 配置管理器来指定 connectino 别名或操作协议。也许这是下一步要做的事情,但我想知道是否有人知道在脚本中包含连接规范的方法。

sql-server sqlcmd
  • 1 个回答
  • 588 Views
Martin Hope
DBALUKE HUANG
Asked: 2019-03-29 08:08:56 +0800 CST

SQLCMD 无法连接我的命名实例

  • 0

我正在使用基于 Windows Server 2016 的 SQL Server 2017。我正在尝试连接我的命名实例,但我收到如下屏幕截图所示的错误消息: 无法通过 SQLCMD 连接到 SQL 实例

所以我尝试重新安装 ODBC Driver 13。但我收到如下错误: 重新安装 ODBC 驱动程序 13

即使在我卸载 ODBC Driver 17 之后,我仍然收到相同的错误消息。任何想法?

先谢谢了!

sql-server sqlcmd
  • 1 个回答
  • 691 Views
Martin Hope
user127832
Asked: 2019-03-28 08:36:40 +0800 CST

消息 102,级别 15,状态 1,服务器 DESKTOP-U368A1B,第 1 行“1”附近的语法不正确

  • 0

当我从 cmd 运行以下 perl 脚本时收到上述错误消息,该脚本应该在我的数据库中执行一些事务。

#!/usr/bin/perl.

use warnings;
use strict;

my ( $pid1, $pid2, $pid3, $i );    #Declaration of local variables
$| = 1;

if ( ($pid1 = fork()) && ($pid2 = fork()) && ($pid3 = fork()) ) {       #Starts child processes
   print( "I have to wait for my kids.\n" );        #The main process execute this code
   my $straggler = wait();              #The main process waits for all the children to finish
   print( "Finally $straggler finished, now I can go.\n" );
}
elsif ( $pid1 && $pid2 && defined($pid3)) {         #Is executed by the third child 
   sleep( 1 );                      #Wait 1 second
   print( "Start moving money between account 1 - 2" );
   sleep(2);
   for ($i=0; $i < 1000; $i++) {            #Start transaction repeatedly
    system("sqlcmd -S DESKTOP-U368A1B  -Q tranKonto(1,2,100,1)"); #Moves 100 from account 1 to account 2
   }
   print( "End moving money between accounts trans 1 - 2 " );
   exit();
}
else {
   die( "Forking problems: " );
}

交易看起来像这样:

PROCEDURE [dbo].[tranKonto] @konto1 INT,  @konto2 INT, @belopp INT, @isoLevel INT
AS
BEGIN TRANSACTION tranKonto

    IF(@isoLevel=0)
        SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    ELSE IF (@isoLevel = 1)
        SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
    ELSE IF (@isoLevel=2)
        SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
    ELSE IF(@isoLevel=3)
        SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

    BEGIN 
        UPDATE Konto SET belopp=belopp-@belopp WHERE kontonr=@konto1
        UPDATE Konto SET belopp=belopp+@belopp WHERE kontonr=@konto2    
        EXEC kontoLog_SP @konto1,  @konto2 , @belopp , @isoLevel;
    END

COMMIT TRANSACTION tranKonto
RETURN

运行脚本时出现以下错误消息:

消息 102,级别 15,状态 1,服务器 DESKTOP-U368A1B,第 1 行“1”附近的语法不正确。

如果有人能帮助我,我将不胜感激。我试图用谷歌搜索解决方案,但没有任何运气。

sql-server sqlcmd
  • 1 个回答
  • 1224 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve