studio - sql server tutorial




SQL সার্ভারে দুটি ভিন্ন সার্ভার থেকে তথ্য নির্বাচন করা হচ্ছে (10)

এসকিউএল সার্ভারে দুটি ভিন্ন সার্ভারে থাকা দুটি পৃথক ডাটাবেস থেকে একই প্রশ্নের মধ্যে আমি কিভাবে তথ্য নির্বাচন করতে পারি?


2 বিভিন্ন ডাটাবেস জুড়ে জিজ্ঞাসা একটি বিতরিত প্রশ্ন। এখানে কিছু কৌশল প্লাস পেশাদার এবং cons এর একটি তালিকা:

  1. লিঙ্কযুক্ত সার্ভার: SQL সার্ভার প্রতিলিপি প্রদানের চেয়ে বিস্তৃত ডাটা উত্সগুলিতে অ্যাক্সেস সরবরাহ করুন
  2. লিংক সার্ভার: প্রতিলিপি সমর্থন করে না বা যার জন্য অ্যাড অ্যাক্সেস প্রয়োজন যা তথ্য উত্স সাথে সংযোগ করুন
  3. লিঙ্ক সার্ভার: OPENDATASOURCE বা OPENROWSET চেয়ে ভাল সঞ্চালন
  4. OPENDATASOURCE এবং OPENROWSET ফাংশন: একটি বিজ্ঞাপন হক ভিত্তিতে তথ্য উত্স থেকে তথ্য পুনরুদ্ধারের জন্য সুবিধাজনক। OPENROWSET এর বুকে সুবিধার পাশাপাশি একটি ফরম্যাট ফাইল যা প্রয়োজন হতে পারে তার প্রয়োজন হতে পারে না
  5. অপারেটিং : ভেরিয়েবল সমর্থন করে না
  6. সমস্ত টি-এসকিউএল সমাধান। আনুষ্ঠানিকভাবে বাস্তবায়ন এবং সেট আপ করা সহজ
  7. সোর্স এবং নিয়তির মধ্যে সম্পর্কের উপর সমস্ত নির্ভরশীল যা কার্যকারিতা এবং পরিমাপযোগ্যতাকে প্রভাবিত করতে পারে

অন্য সার্ভারে একটি সার্ভারে একটি লিঙ্কযুক্ত সার্ভার সংজ্ঞা তৈরি করা হয়েছে (আপনার এটি করার জন্য SA প্রয়োজন), তারপরে কেবল তাদের 4-ভাগ নামকরণের সাথে উল্লেখ করুন (BOL দেখুন)।


আমি জানি এটি একটি পুরনো প্রশ্ন কিন্তু আমি প্রতিশব্দের ব্যবহার করি। উল্লেখ্য, ক্যোয়ারীটি ডাটাবেস সার্ভারের মধ্যে অ্যাক্সেস করা হয় এবং ডাটাবেস সার্ভারের একটি টেবিলের জন্য সন্ধান করে যা সার্ভার এ বিদ্যমান নেই। সার্ভার বি থেকে আপনার টেবিল কল করে এমন একটি ডাটাবেসের সমার্থক যোগ করুন। আপনার জিজ্ঞাস্যটি করতে হবে না কোন স্কিমা, বা বিভিন্ন ডাটাবেস নাম অন্তর্ভুক্ত করুন, স্বাভাবিক প্রতি কেবলমাত্র টেবিল নামটি কল করুন এবং এটি কাজ করবে।

সার্ভার লিঙ্ক করার কোন প্রয়োজন নেই হিসাবে প্রতি প্রতিশব্দ লিঙ্কিং সাজানোর হয়।


এই সব ভাল উত্তর, কিন্তু এই এক অনুপস্থিত এবং এটি তার নিজস্ব শক্তিশালী ব্যবহার আছে। সম্ভবত এটি OP কে চেয়েছিলেন তা মাপসই করে না, তবে প্রশ্নটি অস্পষ্ট ছিল এবং আমি মনে করি অন্যরা এখানে তাদের পথ খুঁজে পেতে পারে। মূলত আপনি একাধিক সার্ভারগুলির বিরুদ্ধে একটি প্রশ্ন চালানোর জন্য 1 উইন্ডো ব্যবহার করতে পারেন, এখানে কীভাবে:

এসএসএমএসে নিবন্ধিত সার্ভার খুলুন এবং স্থানীয় সার্ভার গোষ্ঠীগুলির অধীনে একটি নতুন সার্ভার গ্রুপ তৈরি করুন।

এই গ্রুপের অধীনে আপনি প্রতিটি সার্ভারের জন্য নতুন সার্ভার নিবন্ধীকরণ তৈরি করতে চান। যদি ডিবি নামগুলি ভিন্ন হয় তবে বৈশিষ্ট্যগুলিতে প্রতিটিের জন্য একটি ডিফল্ট সেট করা নিশ্চিত করুন।

এবার প্রথম ধাপে তৈরি গ্রুপটিতে ফিরে যান, ডান ক্লিক করুন এবং নতুন ক্যোয়ারী নির্বাচন করুন। একটি নতুন ক্যোয়ারী উইন্ডো খোলা হবে এবং আপনার যেকোনো অনুসন্ধান গোষ্ঠীর প্রতিটি সার্ভারে কার্যকর হবে। ফলাফল একটি অতিরিক্ত কলাম নাম দিয়ে একটি একক ডেটা সেটে উপস্থাপিত হয় যা নির্দেশ করে যে সার্ভার কোন রেকর্ড থেকে এসেছে। আপনি যদি স্ট্যাটাস বারটি ব্যবহার করেন তবে সার্ভারের নামটি একাধিক করে প্রতিস্থাপিত হবে।


লিঙ্ক সার্ভার যোগ করার জন্য সরলীকৃত সমাধান

প্রথম সার্ভার

EXEC sp_addlinkedserver @server='ip,port\instancename'

দ্বিতীয় লগইন

EXEC sp_addlinkedsrvlogin 'ip,port\instancename', 'false', NULL, 'remote_db_loginname', 'remote_db_pass'

স্থানীয় ডিবি লিঙ্ক থেকে প্রশ্ন সঞ্চালন

INSERT INTO Tbl (Col1, Col2, Col3)
SELECT Col1, Col2, Col3
FROM [ip,port\instancename].[linkedDBName].[linkedTblSchema].[linkedTblName]

সার্ভার 2008:

যখন এসএসএমএস সার্ভার 1। DB1 সংযুক্ত এবং চেষ্টা করুন:

SELECT  * FROM
[server2].[DB2].[dbo].[table1]

অন্যরা যেমন উল্লেখ করেছে, সার্ভার সংযুক্ত না থাকলে এটি কাজ করে না।

আমি ত্রুটি পেতে:

Sys.servers সার্ভার DB2 খুঁজে পাওয়া যায়নি। যাচাই করুন যে সঠিক সার্ভারের নাম উল্লেখ করা হয়েছে। যদি প্রয়োজন হয়, sys.servers সার্ভার যোগ করার জন্য সঞ্চিত পদ্ধতি sp_addlinkedserver সঞ্চালন করুন।

সার্ভার যোগ করার জন্য:

রেফারেন্স: sp_addlinkedserver লিঙ্ক ব্যবহার করে সার্ভার যোগ করার জন্য: [1]: sp_addlinkedserver ব্যবহার করে সার্ভার যোগ করতে

আপনার sysservers মধ্যে কি দেখতে তা শুধু জিজ্ঞাসা করুন:

SELECT * FROM [sys].[servers]

হিসাবে @ Super9 তথ্য সরবরাহকারী SQLOLEDB সঙ্গে SQL সার্ভার প্রমাণীকরণ ব্যবহার করে OPENDATASOURCE সম্পর্কে বলেছিলেন। আমি এখানে কেবল একটি টেবিলের জন্য একটি কোড স্নিপেট পোস্ট করছি যেখানে বর্তমান সেভার ডাটাবেসটিতে কোডটি চলছে এবং অন্য সার্ভারে অন্যটি '192.166.41.123'

SELECT top 2 * from dbo.tblHamdoonSoft  tbl1 inner JOIN  
OpenDataSource('SQLOLEDB','Data Source=192.166.41.123;User ID=sa;Password=hamdoonsoft')
.[TestDatabase].[dbo].[tblHamdoonSoft1] tbl2 on tbl1.id = tbl2.id

হ্যা, তুমি পারো.

আমি মনে করি তুমি কেমন আছো, তাই আমি উত্তর দেব।

লিঙ্কড সার্ভারের জন্য আপনি কি খুঁজছেন। আপনি অবজেক্ট এক্সপ্লোরারের গাছের নিচের অবস্থান থেকে এসএসএমএসে তাদের কাছে আসতে পারেন:

Server Objects-->Linked Servers

অথবা আপনি sp_addlinkedserver ব্যবহার করতে পারেন।

আপনি শুধুমাত্র একটি সেট আপ করতে হবে। একবার আপনার এটি আছে, আপনি অন্য সার্ভারে একটি টেবিল কল করতে পারেন:

select
    *
from
    LocalTable,
    [OtherServerName].[OtherDB].[dbo].[OtherTable]

মালিক সবসময় dbo না মনে রাখবেন, তাই আপনি যে কোন স্কিমা ব্যবহার করে এটি প্রতিস্থাপন নিশ্চিত করুন।


SELECT
        *
FROM
        [SERVER2NAME].[THEDB].[THEOWNER].[THETABLE]

আপনি লিঙ্কযুক্ত সার্ভার ব্যবহার করে দেখতে পারেন। লিংক করা সার্ভার অন্যান্য ধরনের ডাটা উত্স হতে পারে যেমন DB2 প্ল্যাটফর্মগুলি। SQL সার্ভার TSQL বা Sproc কল থেকে DB2 অ্যাক্সেস করার চেষ্টা করার জন্য এটি একটি পদ্ধতি ...


 select * 
 from [ServerName(IP)].[DatabaseName].[dbo].[TableName]




sql-server