小编Sim*_*onJ的帖子

存储过程中的 SQL 默认架构解析

在 MS SQL (2008 R2) 中,我凭经验发现,在以下 SQL 中,存储过程从定义该过程的同一架构中的表中返回数据,但如果没有这样的架构,则将默认返回到用户的默认架构被发现。
虽然这看起来很合乎逻辑,但是否有人有章节介绍 MSSQL 在访问存储过程中的非完全限定表时使用模式解析的优先顺序?

假设当前用户将 dbo 作为默认架构。

CREATE SCHEMA [s1]
GO
CREATE TABLE [dbo].[TestTable] ([Id] INT)
GO
CREATE TABLE [s1].[TestTable] ([AnotherId] INT)
GO

CREATE PROCEDURE [dbo].[GetTestTable]
AS BEGIN
    SELECT * FROM [TestTable]
END
GO
CREATE PROCEDURE [s1].[GetTestTable]
AS BEGIN
    SELECT * FROM [TestTable]
END
GO

EXEC [dbo].[GetTestTable]
-- Returns [Id]

EXEC [s1].[GetTestTable]
-- Returns [AnotherId]

DROP TABLE [s1].[TestTable]
GO

EXEC [s1].[GetTestTable]
-- Returns [Id]
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures

4
推荐指数
1
解决办法
1875
查看次数

标签 统计

sql-server ×1

stored-procedures ×1