إذا كنت ترغب في إنشاء حلقة تكرار لإنشاء قواعد بيانات ومستخدمين جدد في SQL Server، ثم تعيين هؤلاء المستخدمين إلى القواعد البيانات المناسبة وتعيين الصلاحيات لهم، يمكنك استخدام الشيفرة التالية كنموذج لبدء العمل:
sqlUSE [master]
GO
DECLARE @NameCursor CURSOR;
DECLARE @DatabaseName NVARCHAR(50);
DECLARE @UserName NVARCHAR(50);
DECLARE @LoginName NVARCHAR(50);
SET @LoginName = 'niunt';
SET @NameCursor = CURSOR FOR
SELECT id
FROM test.dbo.Sheet1$;
OPEN @NameCursor;
FETCH NEXT FROM @NameCursor INTO @DatabaseName;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @DatabaseName;
-- Create database
DECLARE @CreateDatabaseSQL NVARCHAR(4000);
SET @CreateDatabaseSQL = 'CREATE DATABASE [' + @DatabaseName + ']';
EXEC (@CreateDatabaseSQL);
-- Create user
SET @UserName = @LoginName + '\' + @DatabaseName;
DECLARE @CreateUserSQL NVARCHAR(4000);
SET @CreateUserSQL = 'CREATE LOGIN [' + @UserName + '] FROM WINDOWS;';
EXEC (@CreateUserSQL);
-- Assign user to database
DECLARE @AssignUserSQL NVARCHAR(4000);
SET @AssignUserSQL = 'USE [' + @DatabaseName + '];' +
'CREATE USER [' + @UserName + '] FOR LOGIN [' + @UserName + '];' +
'ALTER ROLE [db_owner] ADD MEMBER [' + @UserName + '];'; -- Assigning db_owner role as an example, you can change it as needed
EXEC (@AssignUserSQL);
FETCH NEXT FROM @NameCursor INTO @DatabaseName;
END;
CLOSE @NameCursor;
DEALLOCATE @NameCursor;
GO
يرجى ملاحظة أن هذا الكود يفترض أن اسم المستخدم الذي تستخدمه في الدخول (@LoginName
) يمكنه إنشاء قواعد بيانات ومستخدمين. إذا كنت تواجه مشاكل في تنفيذ هذا الكود، فقد تحتاج إلى طلب المساعدة من مسؤول قاعدة البيانات الخاصة بك للحصول على الصلاحيات اللازمة.
المزيد من المعلومات
بالطبع، هذا الكود يستخدم متغيرات السيد سير لتكرار عملية إنشاء قاعدة بيانات ومستخدمين جدد. يفترض الكود أن لديك جدولًا يسمى Sheet1$
في قاعدة بيانات test
يحتوي على حقول الـ id
التي تمثل أسماء القواعد البيانات التي ترغب في إنشائها.
بمجرد تحديد القواعد البيانات وإنشائها، يتم إنشاء مستخدم لكل قاعدة بيانات باستخدام اسم مستخدم مشتق من اسم القاعدة بمساعدة المتغيرات المعرفة مسبقًا. بعد ذلك، يتم تعيين هذا المستخدم إلى القاعدة البيانات المناسبة وتعيين الصلاحيات المطلوبة (في هذه الحالة، تم تعيين دور db_owner
كمثال ويمكن تغييرها حسب الاحتياجات).