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
    • 最新
    • 标签
主页 / user-1245387

Josh Brunton's questions

Martin Hope
Josh Brunton
Asked: 2025-03-21 18:20:44 +0800 CST

数据库还原后,SQL Server 2022 实例拒绝接受来自 sqlcmd 的命令

  • 5

语境

我有一个 powershell 脚本,用于在测试环境中为应用程序执行一些设置。除其他外,该脚本调用了sqlcmd多次。

几天前,我对数据库进行了还原。我使用 SQL Server Management Studio 20.2 将 BAK 文件还原到本地 Microsoft SQL Server 2022 实例(以下所有版本信息)。我使用 SSMS 还原数据库向导,使用 、 并关闭与数据库的现有连接来执行此WITH REPLACE操作WITH_RESTRICTED_USER。

然后,我尝试针对这个刚刚恢复的数据库运行配置脚本,就像我之前成功做过一百次一样。脚本首先确保 sqlcmd 已安装且为最新版本:

winget install sqlcmd

接下来,它执行以下格式的命令,其中 $Server 是.\sqlexpress而 $Database 可能有所不同(因此它似乎不是数据库特定的问题):

sqlcmd -S $Server -d $Database -E -Q "ALTER DATABASE..."

我没有指定是否使用 TCP 还是命名管道 - 我只是让它使用默认值。

问题

通常,每个 sqlcmd 都会在一秒内完成并输出类似于Commands completed successfully.或 的内容(7653 rows affected),但是,大约 45 秒后,我得到了每个命令的以下输出(注意:在一次命令调用中同一行会重复两次):

Timed out waiting for pipe '\\.\pipe\SQLLocal\sqlexpress' to come available
Timed out waiting for pipe '\\.\pipe\SQLLocal\sqlexpress' to come available

我尝试过的方法

除了明显的验证(SQL 服务器实例正在运行、连接详细信息正确等)之外,我还尝试过:

  • 再次恢复数据库,并再次关闭所有现有连接,以确保至少有一个连接可用
  • 重新启动 SQL 服务器实例
  • 重新启动整个机器

我尝试在 SSMS 中“手动”运行每个 SQL 查询,并且每个查询都没有报告错误并且观察到具有预期的效果,但是这个过程需要很长时间,必须复制出每个查询并替换变量,并时不时切换回 powershell 来运行非 SQL 命令。

问题)

发生了什么导致 sqlcmd 超时,我可以进行哪些更改以确保它能够按预期/习惯运行?


版本信息

SSMS 版本信息:

SQL Server Management Studio                        20.2.30.0
SQL Server Management Objects (SMO)                     17.100.40.0+f57178c95d4376485d3f597f2b829bbd6f80fd6f
Microsoft T-SQL Parser                      17.2.3.1+46115224c373754fdd41516eaae1386cabc4819e.46115224c373754fdd41516eaae1386cabc4819e
Microsoft Analysis Services Client Tools                        20.0.3.0
Microsoft Data SqlClient (MDS)                      5.1.5
Microsoft SQL Server Data-Tier Application Framework (DacFX)                        162.3.566.1+89d89fe935702c8836ebaf6a03cf61b85118f847.89d89fe935702c8836ebaf6a03cf61b85118f847
Microsoft .NET Framework                        4.0.30319.42000
Operating System                        10.0.22631

SQL 服务器 ( SELECT @@VERSION):

Microsoft SQL Server 2022 (RTM-GDR) (KB5046861) - 16.0.1135.2 (X64)   Oct 18 2024 15:31:58   Copyright (C) 2022 Microsoft Corporation  Express Edition (64-bit) on Windows 10 Enterprise 10.0 <X64> (Build 22631: ) (Hypervisor) 

从 Windows 中提取systeminfo:

OS Name:                   Microsoft Windows 11 Enterprise
OS Version:                10.0.22631 N/A Build 22631
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free
windows
  • 1 个回答
  • 87 Views

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve