Linked Sever ها(۱)

قسمت دوم ،قسمت سوم  ، قسمت چهارم

Linked server ها امکان اتصال به منابع داده خارجی را فراهم آورده ، به شما اجازه دسترسی به داده و اجرای procedure ها در SQL Serverی غیر از Instanceی که در حال اجراست را می دهد.

علاوه بر این linked serverها امکان دسترسی به هر نوع منبع داده ای که قابل تطبیق با ODBC  باشد از قبیل Oracle,Excel,Flat File و ... را می دهد که همین امکان باعث می شود در بسیاری مواقع linked serverها گزینه مناسبی در DTS ها و یا BCP ها بجای منابع خارجی  باشند.

در شماره اول این مقاله نگاهی بر اتصال ۲ سرور SQL  بیکدیگر به صورت linked server خواهیم داشت و در بخش های بعدی اتصال به سایر منابع داده ای را بررسی می کنیم.

جهت گرفتن نتیجه بهتر از این مثال شما می بایستی با ابزارهای اتصال SQL Server client  و تنظیم کردن و اعطای مجوز به Login  ها و UserId ها آشنا باشید.

تمام این مثال ها با SQL Server 2000 ایجاد شده است.

Linked Server های SQLی

link کردن ۲ سرور یک راه ارتباطی بین آن دو ایجاد می کند:

Two servers linked together

برای دیدن فایل بزرگتر کلیک کنید.

 

بنابر این اگر ما با سرور خود (MiyajimaXP) ارتباط برقرار کنیم، و Fuji بعنوان linked server ما باشد، بدون ارتباط مستقیم با Fuji  می توانیم از داده ها Query بگیریم و یا procedure هایی را روی Fuji اجرا کنیم. البته ارتباط برقرار شده دو طرفه نیست و از سرور Fuji هم یک Linked server به  MiyajimaXP نخواهیم داشت.

 

تنظیم یک Linked Server اولیه

قدم اول در تنظیم یک linked server اطمینان از وجود راه ارتباطی بین دو سرور است . سپس باید سرور linked(و یا بعبارتیremote) را به سرور Local معرفی کنیم.دستور SQL مربوط به تنظیم یک  linked server  به شکل زیر است:

SP_addlinkedserver 'Fuji',N'SQL Server’

در این مثال من از نام مستعار برای معرفی سرور استفاده کرده ام که بجهت سهولت در یادگیری بوده که در آینده نگاهی به نامهای منطقی سرور ها خواهیم داشت.

پس از اجرای دستور فوق بایستی سطح دسترسی بین دو سرور و اینکه چه کاربری با چه user/passی باید به linked server بتواند Log in کند، مشخص شود.

در حالت پیش فرض هر Loginی که در هر دو سرور موجود باشد مجاز به اجرای query ها در طول این ارتباط است.در غیر اینصورت کاربر با پیغام "Login failed" مواجه می شود.پس از همسان بودن user و مجوزها در دو سرور اطمینان حاصل کنید تا دردسر برای admin سرورها در حالی که شما نیستید ایجاد نشود!

 

تنظیمات Login های Linked server ها

موارد زیادی برای ایجاد امنیت linked server ها وجود دارد. یکی از آنها این است که هر ارتباطی که بین سرورها برقرار می شود از یک login معتبر در سرور remote استفاده کرده است. با این دستور می توان همان login ID به Fuji نیز دسترسی یافته یا نه:

 

sp_addlinkedsrvlogin     @rmtsrvname = FUJI, @useself = false, @locallogin = NULL, @rmtuser = fuji_PUBS, @rmtpassword = fuji_PUBS

این دستور تمامLogin های Local را به "fuji_PUBS" login در سرور remote مرتبط می کند، در نتیجه تمام دسترسی ها به linked server تحت مجوزهای اعطا شده به fuji_PUBS موجود در سرور remote می شود.با استفاده از این روش نیازی به همسان سازی user/pass کابران با سرور linked ندارد اما اگر pass  مربوط به fuji_PUBS در linked server تغییر کند، login  مربوط به linked server را دوباره تنظیم کنید.

 

تست برقراری ارتباط

ساده ترین راه برای تست برقراری ارتباط اجرای quey ساده زیر است.خط اول مشخصات اتصال شما در سرور محلی خودتان و خط دوم مربوط به اطلاعات اتصالی سرور remote می باشد:

 

select @@serverName, user_name(), db_name(), @@spid
select * from 
   openquery (FUJI, 'select @@serverName, user_name(), db_name(), @@spid')

در این مثال ساده شما می توانید با طرز نوشتن query بر روی linked server نیز آشنا شوید. در ادامه مطالب بیشتری نیز می آموزید.

 

مطالبی در موردLogin  ها

 از هم اکنون fuji_PUBS login  ،Login  پیش فرض برای تمام کاربرانی است که به linked server دسترسی می یابند. این کاربران تمام مجوزهای fuji_PUBS login بر روی سرور remote را نیز ارث بری می کنند. البته می توان کاربران دیگری را با Login های دیگری در سرورremote علاوه بر fuji_PUBS نیز در کنار قبلی ها تعریف کرد.این مثال یک ارتباط بین Login هایی با نام 'Tokyo' که بر روی هر دو سرور موجود است، ایجاد می کند:

sp_addlinkedsrvlogin  @rmtsrvname = FUJI ,@useself = true , @locallogin = Tokyo , @rmtuser = Tokyo  , @rmtpassword = Tokyo

 هر کاربری که با نام Tokyo وارد شود و به linked server دسترسی پیدا کند ، می تواند با Id  خودش به linked server دسترسی داشته باشد ، در حالی که همچنان کاربران دیگر با همان ID پیش فرض به  linked server متصل هستند.
 

حذف Login ها
شما می توانید یک linked server login را با دستور زیر حذف کنید:
 

sp_droplinkedsrvlogin @rmtsrvname = FUJI,@locallogin = Tokyo

 
حذف
serverها
 اگر بخواهید
linked server ی را حذف کنید، توسط دستور sp_dropserver این کار میسر می شود.برای این کار login های نسبت داده شده ابتدا باید حذف شوند که آسانترین راه مشخص کردن پارامترهای 'droplogins'  برای پروسیجر sp_dropserver است که این کار سخت را برایتان انجام می دهد:

sp_dropserver fuji, droplogins

 

 

اصل مقاله : Linked servers

نویسنده مقاله:  Neil Boyle

 

ذخیره Backup از SQL Server در محلی بر روی شبکه

اگر شما در حال اجرای SQL Server  تحت یک Account سیستمی Local هستید، مجاز به Backup گیری روی محلی در شبکه نخواهید بود.شما می بایستی Account مربوط به SQL Server خود را جهت انجام چنین عملی تغییر دهید.در اینجا طرز عمل را آورده ام:

  1. متوقف کردن SQL Service
  2. به Start->run->services.msc رفته و MSSQLSERVER را انتخاب کرده و با کلیک راست Properties را بیاورید.
  3. به قسمت LogOn بروید.
  4. 'This Account' را انتخاب کرده و اکانتی را که مجوز دسترسی به شبکه داشته باشد در اینجا بیاورید.
  5. ok را زده و خارج شوید.

SQL Server  را  restart کنید.هم اکنون شما قادرید Backup های خودتان را در محلهای مورد نظرتان در شبکه مطابق با سطح دسترسی اکانتتان ذخیره نمائید.

لینک مقاله : http://www.devx.com/tips/Tip/33192?trk=DXRSS_DB