gpt4 book ai didi

sql-server - 在 SQL Server 中创建 USER 生成错误 : SUBQUERY RETURNED MORE THAN 1 VALUE

转载 作者:行者123 更新时间:2023-12-02 23:31:51 24 4
gpt4 key购买 nike

我有一个 Delphi XE3 应用程序,它可以在 SQL Server 数据库中创建用户和登录名。我使用 FireDAC TAdConnectionTADQuery 和两个 TAdScript 来执行 SQL 语句来创建用户和登录名。当我尝试在 SQL Server 上创建登录名时,用于创建登录名的 SQL 语句工作正常

CREATE LOGIN LOGIN_NAME 
WITH PASSWORD='PASSWORD', CHECK_POLICY = OFF,
DEFAULT_DATABASE = DATABASE

但是当我尝试通过数据库创建用户时

CREATE USER USER_NAME 
FOR LOGIN LOGIN_NAME WITH DEFAULT_SCHEMA=dbo

代码返回错误:

Subquery returned more than 1 value. This is not permitted when the subquery follows =,!=,<,<=,>,>= or when the subquery is used as an expression

我尝试使用 TAdConnectionTAdQueryTADScript 执行 SQL 语句,但它们都返回相同的错误。

你能帮忙吗?

更新1:感谢您的帮助和评论

这是我使用 SQL Server Management Studio 创建数据库用户时的结果

CREATE USER KDESAR12 FOR LOGIN KDESAR12 
WITH DEFAULT_SCHEMA=dbo

结果

(1 row(s) affected)

用于获取数据库触发器的查询

select * from KACTUSDESARROLLO.sys.triggers where parent_class_desc = 'DATABASE'

返回 0 行

我的Delphi代码如下:

//Using TADScript
try
lStSQL := 'SET CMDSEP ;';
lStSQL := lStSQL + ' USE MY_DATABASE_NAME; ';

lStSQL := lStSQL + ' CREATE USER KDESAR12 FOR LOGIN KDESAR12 WITH DEFAULT_SCHEMA=dbo;';

ADScript1.SQLScripts.Add.SQL.Text := lStSQL;
ADScript1.ValidateAll;
ADScript1.ExecuteAll;

except on E: exception do
begin
ShowMessage(E.Message);
end;
end;

//Using TADQuery
try
lStSQL := ' CREATE USER KDESAR12 FOR LOGIN KDESAR12 WITH DEFAULT_SCHEMA=dbo;';

ADQuery2.SQL.Add (lStSQL);
ADQuery2.ExecSQL;

except on E: exception do
begin
ShowMessage(E.Message);
end;
end;

//Using TADConnection
try
lStSQL := ' CREATE USER KDESAR12 FOR LOGIN KDESAR12 WITH DEFAULT_SCHEMA=dbo;';

ADConnection1.ExecSQL (lStSQL);

except on E: exception do
begin
ShowMessage(E.Message);
end;
end;

所有组件返回相同的错误

最佳答案

该语句导致该错误的唯一方法是 DDL 触发器。 EG

CREATE TRIGGER create_user_trigger 
ON DATABASE
FOR create_user
AS
declare @id int = (select object_id from sys.objects);
;
go

关于sql-server - 在 SQL Server 中创建 USER 生成错误 : SUBQUERY RETURNED MORE THAN 1 VALUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44295816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com