Cân nhắc sử dụng dymanic SQL để tạo người dùng. Ví dụ:để tạo thông tin đăng nhập máy chủ có tên @login
với người dùng cơ sở dữ liệu có tên 'DEV' + @login
:
create procedure dbo.CreateLoginAndUser(
@login varchar(100),
@password varchar(100),
@db varchar(100))
as
declare @safe_login varchar(200)
declare @safe_password varchar(200)
declare @safe_db varchar(200)
set @safe_login = replace(@login,'''', '''''')
set @safe_password = replace(@password,'''', '''''')
set @safe_db = replace(@db,'''', '''''')
declare @sql nvarchar(max)
set @sql = 'use ' + @safe_db + ';' +
'create login ' + @safe_login +
' with password = ''' + @safe_password + '''; ' +
'create user DEV' + @safe_login + ' from login ' + @safe_login + ';'
exec (@sql)
go
Có thể dễ dàng hơn để xây dựng phía máy khách câu lệnh SQL. Nhưng ngay cả khi đó, bạn không thể sử dụng các tham số với create login
bản tường trình. Vì vậy, hãy cảnh giác về SQL Injection.