ログインまたはユーザーを正確に確認したいのは何ですか?ログインはサーバーレベルで作成され、ユーザーはデータベースレベルで作成されるため、ログインはサーバー内で一意です。
また、ログインに対してユーザーが作成されます。ログインのないユーザーは孤立したユーザーであり、ログインなしでSQLサーバーのログインを実行できないため、役に立ちません。
多分これが必要
ログインを確認する
select 'X' from master.dbo.syslogins where loginname=<username>
上記のクエリは、ログインが存在する場合は「X」を返し、それ以外の場合はnullを返します。
次に、ログインを作成します
CREATE LOGIN <username> with PASSWORD=<password>
これにより、SQLサーバーにログインが作成されますが、強力なパスワードのみを受け入れます
ログインしたい各データベースにユーザーを作成します
CREATE USER <username> for login <username>
ユーザーに実行権を割り当てる
GRANT EXECUTE TO <username>
SYSADMIN権限を持っているか、略して「sa」と言う必要があります
そのためのSQLプロシージャをデータベースに書くことができます
create proc createuser
(
@username varchar(50),
@password varchar(50)
)
as
begin
if not exists(select 'X' from master.dbo.syslogins where loginname=@username)
begin
if not exists(select 'X' from sysusers where name=@username)
begin
exec('CREATE LOGIN '+@username+' WITH PASSWORD='''+@password+'''')
exec('CREATE USER '+@username+' FOR LOGIN '+@username)
exec('GRANT EXECUTE TO '+@username)
end
end
end