我从SSMS运行以下T-SQL语句
CREATE DATABASE SomeDB
GO
结果
命令已成功完成。
但实际上并没有创建数据库。我一直在研究并遇到this帖子,它具有相同的行为。该帖子的解决方案是在具有修改sys.databases权限的帐户下运行脚本。
但是,用户我在角色sysadmin
下运行脚本并连接到DB,这足以创建数据库。
关于这里发生了什么的任何想法?
编辑1
如果我更改脚本(这是整个脚本,实际上名为SomeDB
的数据库要测试),请转到以下
CREATE DATABASE SomeDB
GO
USE SomeDB
我在SSMS的消息面板中获得以下内容。
Msg 911,Level 16,State 1,Line 56
数据库' SomeDB'不存在。确保正确输入名称。
如果我将其更改为
CREATE DATABASE SomeDB
GO
SELECT * from sys.databases
我在“消息”面板中看到以下内容
命令已成功完成。
但是没有“结果”面板。这意味着对sys.databases
的访问受到限制,但没有错误消息,这很奇怪。
编辑2
进一步考虑并尝试缩小问题的范围,我通过一个未加工的命令行运行以下内容;
sqlcmd -S .\SQLExpress2014 -Q "CREATE DATABASE SomeDB"
这次数据库确实存在。这会将问题缩小到SSMS本身而不是SQL Server或语法怪癖。
答案 0 :(得分:1)
解决方案:以管理员身份运行SSMS。
尽管CREATE DATABASE
通过未加工的命令行正常工作,但SSMS需要管理员权限才能执行相同操作。沉默的失败是......一个可能的错误?
我会对此做进一步的研究,但我的工作假设是,当通过命令行执行时,它使用SQL Server Windows服务实例的凭据(Network Service
用于旧版本,NT Service\MSSQL$SQLEXPRESS
用于以后写入%programfiles%
文件夹的版本 - 这里存在强烈的权限问题。)如果通过Windows帐户连接,SSMS将使用当前登录的用户(未提升)。如果没有高程,则无%programfiles%
的写入权限。
尽管如此,即使是这种情况(待验证),在此上下文中执行CREATE DATABASE
时仍应存在访问错误。
答案 1 :(得分:0)
右键单击Object explorer中的数据库文件夹并刷新。然后检查数据库是否存在..
答案 2 :(得分:0)
1.-以管理员身份运行SSMS并创建数据库 2.-在命令显示成功创建数据库之后,尝试断开与对象资源管理器的连接并再次连接以查看它是否显示。