如何让SQL Server函数user_name返回dbo

时间:2017-03-13 17:31:14

标签: sql sql-server sql-server-2008 sql-server-2012

我在SQL Server数据库中创建了一个用户(testQA)并且用户是数据库所有者但是当我尝试运行user_name命令时,我得到的是实际用户名而不是{{ 1}}。我想运行第三方提供的一些升级脚本,其中有如下所示的语句

dbo

为了正确运行,user_name需要为if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'TAb1' and TABLE_SCHEMA = user_name() ) drop table TAb1 ,但是当我运行dbo时,我创建的用户总是返回testQA。我可以进行任何更改,以便返回user_name吗?

2 个答案:

答案 0 :(得分:0)

您正在混合用户名和架构名称。用户名是您的用户名(此处为TestQA)。架构名称是您的用户,表或任何数据库对象所依赖的架构的名称(此处为dbo,又称“。”)。

要获取活动用户的默认架构,请使用SELECT SCHEMA_NAME()

更多信息:Find out default SQL Server schema for session

答案 1 :(得分:0)

也许第三方脚本假设您根据与您的用户名匹配的架构创建了表,可能是为了阻止它盲目运行并损坏表。

使用' dbo'而不是登录用户名只需:

if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'TAb1' and TABLE_SCHEMA = 'dbo' ) drop table TAb1