我需要知道执行某些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