مستخدم البرمجة النصية وإنشاء تسجيل الدخول في SQL Azure

StackOverflow https://stackoverflow.com/questions/20353971

  •  25-08-2022
  •  | 
  •  

سؤال

لديّ مجموعة من حسابات المستخدمين وحسابات الخادم التي أحتاج إلى إنشائها على SQL Azure (ثم في 4 بيئات أخرى لـ (DEV ، QA ، UAT & PREDRECTION) وأواجه بعض المشكلات.

المشكلة 1. يجب أن يتم إنشاء تسجيل الدخول على Master / إنشاء المستخدم في قاعدة البيانات. ولكن بما أنه لا يمكنك تبديل قواعد البيانات باستخدام ملف Use بيان ، على الأقل سأحتاج إلى القيام بذلك على دفعتين.

المشكلة 2. لا يبدو أنك قادر على تنفيذ تسجيل الدخول/إنشاء رمز المستخدم في SQL الديناميكي أو كجزء من IF حظر حتى لا أستطيع القيام بفحص إن لم يكن موجودًا حول كل عبارة إنشاء.

هل أنا مستوحى هنا ، أو هل هناك أي طرق أخرى سهلة/قوية لإجراء نصوص على تسجيلات تسجيل الدخول SQL ومستخدمي DB مع بعض الوجود الأساسي في SQL Azure؟

هل كانت مفيدة؟

المحلول

يجب أن تكون قادرًا على استخدام PowerShell لـ Azure لإنجاز ما تحتاجه.

فيما يلي مثال على كيفية إنشاء قاعدة بيانات:http://blogs.msdn.com/b/windowsazure/archive/2013/02/07/windows-azure-sql-database-management-bowershell.aspx

فيما يلي مثال PowerShell على إنشاء مستخدمي SQL:http://sqldbawithabeard.com/2013/09/23/add-user-to-database-role-with-powershell/

نصائح أخرى

أنا متأكد من أنك قمت بحل هذا ، لكنني استخدمت هذا البرنامج النصي في Azure SQL لإنشاء تسجيل دخول إذا لم يكن موجودًا (يعمل ضد master):

IF NOT EXISTS (SELECT * FROM sys.sql_logins WHERE name = 'Blah')
    CREATE LOGIN Blah WITH PASSWORD = 'BS#ah12!!@#' 
ELSE
    PRINT 'Already exist'

وهذا البرنامج النصي لإنشاء المستخدم إذا لم يكن موجودًا (يعمل مقابل قاعدة البيانات الفعلية):

IF NOT EXISTS (SELECT * FROM sys.sysusers WHERE name='Blah')
    CREATE USER Blah FOR LOGIN Blah WITH DEFAULT_SCHEMA = dbo
ELSE
    PRINT 'Already exists'

(كملاحظة جانبية يجب أن أسحب قيمة SID من sys.sql_logins واستخدام ذلك للبحث sys.sysusers, ، لكني أستخدم الاتفاقية للتغلب على ذلك. نرى https://stackoverflow.com/a/36654590/1462905)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top