SQL 从 dbo 更改模式的服务器设置
SQL Server setting that changes schema from dbo
SQL 服务器中是否有 option/setting/default 导致新的存储过程被放置在您的用户 ID 而不是架构 dbo
下?根据 this script.
的测试,我在 db-owner 组中
例如,我在SSMS中运行这个:
create proc TestName as
print 'this is just a test'
创建的存储过程是CORP\myuser.TestName
,所以CORP\myuser
似乎是架构,对吧?
还是创建的时候需要特别指定dbo.TestName
?
与这个问题相关:
The stored procedure created is CORP\myuser.TestName, so CORP\myuser seems to be the schema, right?
是的,我怀疑这是您的默认架构。
How do I set the schema?
在对象上,您说 CREATE PROCEDURE dbo.TestName
或 CREATE PROCEDURE desired_schema_name.TestName
。您以前不必这样做是盲目的运气,因为编写代码的人没有不同的默认模式。但也有其他不懒惰的原因:参见 Bad habits: Avoiding the schema prefix.
在您的用户中,您说:
ALTER USER [CORP\myuser] WITH DEFAULT_SCHEMA = dbo;
但这可能必须由具有更多权限的人 运行 完成,并且可能您甚至没有权限在 dbo
模式中创建过程(或在那里转移对象)。
SQL 服务器中是否有 option/setting/default 导致新的存储过程被放置在您的用户 ID 而不是架构 dbo
下?根据 this script.
例如,我在SSMS中运行这个:
create proc TestName as
print 'this is just a test'
创建的存储过程是CORP\myuser.TestName
,所以CORP\myuser
似乎是架构,对吧?
还是创建的时候需要特别指定dbo.TestName
?
与这个问题相关:
The stored procedure created is CORP\myuser.TestName, so CORP\myuser seems to be the schema, right?
是的,我怀疑这是您的默认架构。
How do I set the schema?
在对象上,您说 CREATE PROCEDURE dbo.TestName
或 CREATE PROCEDURE desired_schema_name.TestName
。您以前不必这样做是盲目的运气,因为编写代码的人没有不同的默认模式。但也有其他不懒惰的原因:参见 Bad habits: Avoiding the schema prefix.
在您的用户中,您说:
ALTER USER [CORP\myuser] WITH DEFAULT_SCHEMA = dbo;
但这可能必须由具有更多权限的人 运行 完成,并且可能您甚至没有权限在 dbo
模式中创建过程(或在那里转移对象)。