Create Logins On Log Shipping Databases

המקרה:

לקוח מבקש ליצור משתמש SQL בשרת המשני שנמצא במערך Log Shipping במטרה לספק יכולת גישה לעובד החברה.

הבעיה:

בסיס הנתונים בשרת המשני נמצא במצב Read-Only, לכן לא ניתן יהיה ליצור את המשתמש ולמפות אותו לבסיס הנתונים הנ"ל.

להלן השגיאה שתתקבל:

הפתרון:

על מנת לפתרון את הבעיה נדרש לפעול באופן ובסדר הבא.

  • הערה:

במידה ונדרש לעשות שימוש באותו שם משתמש בשרת המשני עבור בסיסי נתונים נוספים וממקורות שונים, יש לחזור על סעיף 3 עבור כל אחד משרתי המקור.

צד שרת Secondary (משני):

  • יש ליצור את המשתמש בצד השרת המשני ללא מיפוי המשתמש ל-בסיס הנתונים וללא מתן הרשאה ספציפית.

  • שליפת SID המשתמש שיצרנו על מנת ליצור את אותו המשתמש בעל אותו ה-SID בצד השרת הראשי.

לשם כך נריץ את השאילתה הבאה ונעתיק את ה-SID שהתקבל (נשתמש בו בסעיף 3):

הערה:

רלוונטי רק כשמשתמשים בחשבון מסוג SQL Server Authentication.

בחשבון מסוג Windows Authentication הערך של ה-SID מסופק ע"י מערכת ה-Active Directory לכן שלב זה אינו הכרחי.

SELECT [name], convert(binary(16), sid) as [sid]

FROM sys.sql_logins

WHERE name = 'Your User Name'

להלן התוצאה שתתקבל:

צד שרת Primary (ראשי):

  • יצירת המשתמש בצד השרת הראשי ללא מיפוי המשתמש ל-בסיס הנתונים וללא מתן הרשאה ספציפית.

בשלב זה נזין את הערך SID שהתקבל מסעיף 2 במטרה ליצור את אותו אובייקט המשתמש.

USE [master];

CREATE LOGIN [Your User Name] WITH

PASSWORD = 'Your Password'

,CHECK_EXPIRATION=OFF --> Ignoring from local policy.

,CHECK_POLICY=OFF --> Ignoring from local policy.

,SID = 0x1B6997BF79FCB34588C76D46EF5A4D66 --> Paste your SID.

  • כעת נספק למשתמש שיצרנו בשרת הראשי הרשאות ומיפוי לבסיס הנתונים הרלוונטי.

לדוגמה:

ע"י קוד

USE [Your Database]

GO

CREATE USER [Your User Name] FOR LOGIN [Your User Name]

GO

USE [Your Database]

GO

ALTER ROLE [Specific Permission] ADD MEMBER [Your User Name]

GO

ע"י GUI-

סנכרון המשתמש:

המשתמש שיצרנו יתעדכן באופן אוטומטי בבסיס הנתונים שבשרת המשני וזה הודות להגדרות המתזמן (Schedule) הקיים בג'ובים של ה-Backup Log (שרת ראשי) ו-Restore Log (שרת משני).

בכל אופן, על מנת לסנכרן את המשתמש במידי ניתן להריץ באופן יזום את הג'וב Backup Log ולאחר מכן את הג'וב Restore Log.

זהו סיימנו את המלאכה !

כעת חשבון המשתמש שיצרנו זמין לשימושינו ולשימושו של עובד החברה J.

ניתן להבחין כי באופן אוטומטי החשבון קיבל את המיפוי וההרשאה הנדרשת בצד השרת המשני.

בהצלחה :-)

#IdanGoren #LogShipping #Login #User #עידןגורן

Featured Posts
Posts are coming soon
Stay tuned...
Recent Posts