Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tôi đang cố gắng tạo một thủ tục được lưu trữ để tạo thông tin đăng nhập và người dùng cơ sở dữ liệu?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SQL để tìm mức lương cao nhất thứ N từ bảng lương

  2. Khi nào các cột được tính là thích hợp?

  3. Có thể đồng bộ hóa thời gian thực 2 cơ sở dữ liệu SQL Server không

  4. cách tạo và gọi hàm vô hướng trong sql server 2008

  5. Kiểm soát nguồn và các thủ tục được lưu trữ