奇怪的问题:具有db_owner角色的登陆用户建立的对象其拥有者默认应该是dbo,但是现在变成了该登陆用户了
SQL Server版本:English Standard Server+SP3
存储过程简介:
在存储过程中创建一个临时表Tmp_Test(不是放在tempdb中的,并且先检查是否存在,存在的话先Drop掉),中间会
取用其中的数据,最后再drop掉它。创建语句如下,名字前面没有owner限定:
create table Tmp_Test(
...
)
错误现象:
以前是正常的,但现在发现,如果用一个具有db_owner角色的登陆用户(但不是sa)登陆来执行此存储过
程,该Create语句创建出来的Table,其拥有者不再是dbo,而是此登陆用户,这样后面用Select ...From Tmp_Test语句的
时候就会报错“Invalid object name 'Tmp_Test'.”,此时用“select * from dbo.sysobjects where (xtype = 'U') and
(name = 'Tmp_Test')”语句查看,其uid字段的值不再是1而是登陆用户对应的uid。
如果我修改存储过程为:create table dbo.Tmp_Test(...),则能正常运行。
测试了4台机器,SQL版本都一致,2台能再现这个问题,2台很正常。
应该是什么环境设置的问题,但是我检查了SQL的版本信息等,都毫无发现。4台机器也实在看不出来在此问题上有什么异同点。
谁能指教一二?