External Data Source: תחליף ל-Linked Server ב-Azure

11/09/2017

לפני יותר משנה כתבתי פוסט על פנייה בין דטבייסים שונים ב-Azure. והראיתי כיצד ניתן ליצור External Tables, כלומר – קישור לטבלאות בדטבייס אחר ב-Azure. לא כמו Linked Server שמאפשר לגשת לכל מה שיש בשרת (בכפוף להרשאות), External Tables הוא לטבלה בודדת.

מי שרוצה יותר מזה, יכול להיעזר באותה תשתית (Master Key + Database Scoped Credential) כדי ליצור  External Data Source, שהוא המקבילה ל-Linked Server בעולם ה-Azure, כשמדובר באובייקט ברמת הדטבייס.

קודם כל ניצור באופן חד פעמי Master Key Encryption (אם יש- אי אפשר ואין צורך באחד נוסף):

--Drop Master Key;

If    Not Exists (Select * From sys.key_encryptions Where crypt_type_desc='ENCRYPTION BY PASSWORD')

      Create Master Key Encryption By Password='Geri1234';

כעת ניצור Database Scoped Credential שיכלול את ה-Login והסיסמה לדטבייס עם הנתונים:

--Drop Database Scoped Credential Cr2_Try;

If    Not Exists (Select * From sys.database_scoped_credentials Where name='Cr2_Try')

      Create    Database Scoped Credential Cr2_Try

                With Identity='WriteHereTheLoginName',

                Secret='WriteHereYourSecretPassword';

ולבסוף, בעזרת ה-Database Scoped Credential, ניצור את ה-External Data Source:

Create  External Data Source MyElasticDBQueryDataSrc With   

        (Type=RDBMS,   

        Location='myservername.database.windows.net,1433',   

        Database_Name = 'MyDBName',   

        Credential=Cr2_Try); 

כעת נוכל לשלוף להנאתנו נתונים, להריץ פקודות SQL ואפילו להשתמש בפרמטרים:

--Select command

Exec    sp_execute_remote 

        N'Cr2_Try',  

        N'Select DB_Name(),@@ServerName;';

 

--Execute DML & DDL command

Exec    sp_execute_remote 

        N'Cr2_Try',  

        N'Create Table T_Try(ID Int);';

 

--Using parameters

Exec    sp_execute_remote

        @data_source_name=N'Cr2_Try', 

        @stmt=N'Select Top(@N) * From sys.messages Where severity=@S;', 

        @params=N'@N Int, @S Int',

        @N=10,@S=16;

ההרשאות בהתאם למשתמש ששימש להגדרת ה-Database Scoped Credential.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *