如果我在SQL Server 2005 SSMS(版本9.00.4035.00)中运行sql脚本,如
CREATE TABLE xxx.MyTable
虽然架构xxx确实存在,但表格将被创建为dbo.MyTable!没有错误消息!
我用来运行脚本作为所有权限的用户(使用windows用户和带有服务器角色sysadmin的sql用户测试)
出了什么问题?
答案 0 :(得分:1)
你现在可能有2张桌子
检查:
SELECT SCHEMA_NAME(schema_id), name, create_date, modify_date
FROM sys.objects
WHERE name = 'MyTable'
不要依赖SSMS对象资源管理器:它需要刷新(右键单击表节点,刷新)。
或错误的数据库,错误的服务器等。
我们使用模式,从不有任何问题
编辑:现在检查所有数据库
EXEC sp_msforeachdb '
USE ?
SELECT SCHEMA_NAME(schema_id), name, create_date, modify_date
FROM sys.objects
WHERE name = ''MyTable''
'
答案 1 :(得分:-1)
请查看可能的解决方法:
1)创建一个SQL登录,其中包含对数据库的dbo权限,其中必须创建表和其他对象。让用户使用您创建的SQL登录名连接到SSMS。可以使用SSMS创建表而不会出现问题。
2)让Windows安全组的用户使用TSQL创建表。您将看到将使用用户的用户名为此数据库创建新架构和用户。使用Windows用户名作为所有者创建表。 现在,转到已创建的数据库用户。将默认架构更改为xxx。 该安全组的用户可以在SSMS中创建表,并使用dbo作为对象所有者。
显然,这是一个微软的bug,尚未解决。
https://connect.microsoft.com/feedback/viewfeedback.aspx?FeedbackID=238246&wa=wsignin1.0&siteid=68
希望这有帮助。