我有一个场景,其中有两个数据库 模式:Schema1和Schema2,以及表:Table1。
在Schema1.Table1和Schema2.Table1之类的两个模式中都存在相同的Table1。
现在我们有一些存储过程,这些存储过程将位于另一个Schema中,即Schema3。
CREATE PROCEDURE SCHEMA3.GETDETAILS (
@AS_CODE_TYPE VARCHAR(1) ,
@AS_OUT_FIELD1 VARCHAR(50) OUT ,
@AS_RETURN_VAL INTEGER OUT
)
AS
BEGIN
SELECT @AS_OUT_FIELD1 = [EXTERNALREFKEY] FROM TABLE1 WHERE CODE_TYPE = @AS_CODE_TYPE
IF @AS_OUT_FIELD1 <> ' '
BEGIN
SET @AS_RETURN_VAL = 1 ;
END
ELSE
BEGIN
SET @AS_RETURN_VAL = - 1 ;
END
END
现在我的问题:
如何获取给定用户的架构详细信息。
我是否需要修改SP,以根据用户对特定模式的访问权限将模式动态地追加到表中。
请帮助
答案 0 :(得分:0)
在创建用户时,如果您未指定其架构,则它将具有默认架构'dbo
'。
您可以通过在master
DB中运行以下查询来获取用户架构:
USE master;
SELECT s.name user, s.default_schema_name user_schema FROM sys.database_principals s
WHERE s.name='user'
GO
例如:
如果有权限,您还可以更改用户架构。
有关更多详细信息,请Changing the default schema of a user:
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
希望这会有所帮助