回答

收藏

找出会话的默认SQL Server架构

技术问答 技术问答 372 人阅读 | 0 人回复 | 2023-09-14

我需要知道执行某些DDL的SQL脚本中当前的默认架构是什么。我不需要设置架构,但是我确实需要在变量中获取对它的引用(名称或ID)。该脚本可能会以Windows登录名的身份运行,因此以下操作还不够:
0 |6 ?5 W8 g  X2 F! g& R) YSELECT name, default_schema_name   b# ?+ B9 b! _% N
FROM sys.database_principals - K3 p, [8 y# N  }/ Q
WHERE type = 'S' and name = SYSTEM_USER --SYSTEM User won't be named as a principal
* z( t$ k, q4 p我曾想过要通过在当前模式中创建一个随机命名的对象,然后在information_schema中查看其详细信息来做到这一点,但是有人能用一种更整洁的方式吗?
3 s% d: e# J# v: H0 X我正在使用SQL Server 2005。5 E! G9 W" C: ^" o' b0 c2 k
               
  c2 t3 E1 |5 P. t9 m0 o解决方案:9 G8 |7 W: C1 \1 `) e! J
               
: P# h, Q& B1 x6 Q5 l: t6 t$ `
, h& R) R$ f/ Y8 Q% [% e& o
  E# ^4 p/ N7 @2 N" W7 t                这个怎么样。2 L# ^$ s9 W9 n7 T. W
SELECT SCHEMA_NAME()+ Z+ w3 J9 \! j: s
http://msdn.microsoft.com/en-$ i3 o4 i, t1 \1 A* @
us/library/ms175068.aspx' t2 P* q! B2 ?# F# l$ _- `
1 H% w& Y# P6 ~; W. u& T1 s- T! M
SCHEMA_NAME将返回调用者默认模式的名称% |8 J3 D+ Z( s5 }; \! Y

# s& I. U( M# N: a" ?; W或者 SCHEMA_ID()
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则