首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用SQLCMD

无法使用SQLCMD
EN

Database Administration用户
提问于 2013-10-01 09:57:13
回答 2查看 16.9K关注 0票数 4

我在单用户模式下启动了Server,如:c:\....\sqlservr -m

当我试图用SQLCMD -E连接到它时,我会得到以下错误:

代码语言:javascript
复制
Msg 18461, Level 14, State 1, Server SERVERNAME, Line 1
Login failed to user 'USER\Name'. Reason: Server is in single user mode. Only one administrator can connect at this time.

我作为域管理员登录到服务器上的用户。

在我尝试之前,我登录的用户与这个SQL服务器没有任何关系。(事实上,我正在尝试创建一个新的SA,因为我们不知道当前的密码是什么)

编辑

即使我这么做了:

代码语言:javascript
复制
c:\....\sqlservr -m"sqlcmd"

我仍然收到上面的错误。我不确定是否有来自其他地方的其他SQLCMD调用。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2013-10-01 10:20:27

此情况在系统管理员被锁定时连接到服务器中显式调用:

在单用户模式下启动Server实例时,首先停止Server代理服务。否则,Server代理可能首先连接,并阻止您作为第二个用户进行连接。在sqlcmd或中使用-m选项时,可以限制与指定客户端应用程序的连接。例如,-m"sqlcmd"将连接限制为单个连接,该连接必须将自己标识为sqlcmd客户端程序。当您在单用户模式下启动Server并且未知的客户端应用程序正在获取唯一可用的连接时,请使用此选项。若要通过Management中的查询编辑器进行连接,请使用-m"Microsoft SQL Server Management Studio - Query"

票数 8
EN

Database Administration用户

发布于 2015-06-30 22:34:31

这里有一个潜在的语法问题。尽管正如@RemusRasanu所指出的那样,M.文档M.文档说要使用-m"sqlcmd",如下所示:

例如,-m" sqlcmd“将连接限制为单个连接,该连接必须标识为sqlcmd客户端程序。当您在单用户模式下启动Server并且未知的客户端应用程序正在获取唯一可用的连接时,请使用此选项。

有一些证据表明,参数值中的引号使其无法按预期工作。我在使用单用户模式连接时遇到了问题,从启动参数中删除引号(即使用-mSQLCMD而不是-m"sqlcmd" )对我有用。我用这两种方法做了几次不同的尝试,以验证是否存在因果关系,而这似乎就是事实。也许这是个有问题的案子,但对我来说很管用。

您可以看到SQL日志中的不同之处。例如:

代码语言:javascript
复制
2015-06-30 17:13:41.89 Server      Registry startup parameters: 
     -d c:\Prog[...]\master.mdf
     -e c:\Prog[...]\ERRORLOG
     -l c:\Prog[...]\mastlog.ldf
     -m "SQLCMD"

对比

代码语言:javascript
复制
2015-06-30 17:13:41.89 Server      Registry startup parameters: 
     -d c:\Prog[...]\master.mdf
     -e c:\Prog[...]\ERRORLOG
     -l c:\Prog[...]\mastlog.ldf
     -m SQLCMD

我从这个ServerFault的答案里偷了这个,所以如果你觉得有用的话,去投票吧:https://serverfault.com/a/338294/3183

票数 7
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/50797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档