22,210
社区成员
发帖
与我相关
我的任务
分享
CREATE FUNCTION [dbo].[AllNamedElementsInContainer]
(
@owner ObjectId
)
RETURNS
@result TABLE
(
Id UNIQUEIDENTIFIER PRIMARY KEY,
Owner UNIQUEIDENTIFIER
)
当时错误总是出现在这个地方,提示"'Database '<db_name>' is already open and can only have one user at a time'"。之后我决定不用这个函数了,直接将其实现放在调用的地方,原来函数的传入传出参数改成了
declare @members TABLE
(
Id uniqueidentifier,
Owner uniqueidentifier,
Kind int
);
declare @result TABLE
(
Id UNIQUEIDENTIFIER PRIMARY KEY,
Owner UNIQUEIDENTIFIER
);
这个错误最开始出现在SQL Server 2008 SP3上,然后当我改成了后面的这种形式,这个错误就没有。
但是现在发现在SQL Server 2008 R2 SP1上又出现了错误, 采用了你的停用其他的SQL Server服务之后,依旧出现这个错误,我只好采用如下的声明形式
CREATE TABLE members
(
Id uniqueidentifier,
Owner uniqueidentifier,
Kind int
);
CREATE TABLE result
(
Id UNIQUEIDENTIFIER PRIMARY KEY,
Owner UNIQUEIDENTIFIER
);
测试了129次,没有发现错误。我猜测这种修改应该是正确的。请问你的看法呢?你知不知道这个问题是如何发生的么?
关键是后面还有很多SQL语句,创建了很多的Function,也是采用如上的方式,也更加复杂,我不可能一一将他们全部改正过来,最好还是采用原来的形式,所以请问你有更好的建议么,谢谢啦。
create function [AllNameSpacesFor]
(
@owner ObjectId
)
returns @result table
(
Id uniqueidentifier primary key
)
请问你有什么合适的建议么?谢谢啦。