سلام
نمیدونم این بدردتون میخوره یا نه
اس کیو ال سرور این قدرت رو داره که اطلاعات رو تو چند فایل ذخیره کنه .
یعنی برای دیتابیستون 3 تا فایل میسازین فایل اصلی -فایل دوم و فایل لاگ
حالا میتونیم به سرور بگیم مثلا وقتی فلان فیلد فلان جدول بزرگتر از فلان مقدار بود در فایل اصلی ثبت کن و در غیر اینصورت در فایل دوم در این حالت اطلاعات ما بصورت فیزیکی در دو تا فایل ذخیره میشن که هر فایلی میتونه در هارد جدا باشه ولی وقتی از اطلاعات این جدول استفاده میکنیم اصلا متوجه این عملیات نمیشیم چون مدیریتش با خود سرور هست .
این کار اسمش هست table partition
ولی اگه فقط هدف حل همین مسئله باشه و باید دیتابیس دو تا باشه میشه همچین کاری هم کرد :
دو حالت در نظر میگیرم :
دو تا دیتابیس روی دو تا سرور مجزا داریم که یکیش رو میگیم سرور1 و اونیکی سرور2
این همون حالتی هست که دوستمون لرد گفته
دو تا جدول داریم رو هر دیتابیس با اسم tbl_Clone
حالا میخواهییم عملیات رو روی سرور1 انجام بدیم
پس اول یه synonyms رو سرور1 ایجاد میکنیم از جدول همانند که روی سرور2 هست
کد:
CREATE SYNONYM [dbo].[syn_server2] FOR [server2].[Mydbonserver1].[dbo].[tbl_Clone]
بعد یه ویو درست میکنیم تو سرور1 با این دستور :
کد:
SELECT * FROM dbo.syn_server2 WHERE (id>10)
UNION ALL
SELECT * FROM tbl_Clone WHERE (id>10)
اینجوری از هر دو دیتابیس میخونی و مجموع نتایج ادغام میشن و نمایش داده میشن :)
حالت دوم هم اینمیشه که هر دو دیتابیس رو یک سرور هستن و تو یک اینستنس
تو این حالت نیازی به ساخت synonym نیست
و دستور رو میتونییم به این حالت بنویسیم :
کد:
SELECT * FROM dbo.db1.tbl_Clone WHERE (id>10)
UNION ALL
SELECT * FROM dbo.db2.tbl_Clone WHERE (id>10)
نکته : اگر از synonym استفاده کنیم باید سرور2 به سرور1 بشناسونیم :
sp_addlinkedserver
و در سرور2 حق دسترسی بدیم که ساده ترینش ایجاد BUILTIN\Users هست