Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर टेबल्स स्कीमा और डेटा की तुलना करने के विभिन्न तरीके

SQL सर्वर हमें किसी डेटाबेस तालिका या तालिकाओं को किसी अन्य डेटाबेस, या एक ही डेटाबेस को अलग-अलग नामों से दोहराने या संग्रहीत करने के लिए विभिन्न समाधान प्रदान करता है। SQL सर्वर डेवलपर या डेटाबेस एडमिनिस्ट्रेटर के रूप में, आपको ऐसी परिस्थितियों का सामना करना पड़ सकता है जब आपको यह जाँचने की आवश्यकता हो कि इन दो तालिकाओं में डेटा समान है, और यदि, गलती से, डेटा इन दो तालिकाओं के बीच दोहराया नहीं गया है, तो आपको डेटा को सिंक्रनाइज़ करने की आवश्यकता है तालिकाओं के बीच। इसके अलावा, यदि आपको एक त्रुटि संदेश प्राप्त होता है, जो डेटा सिंक्रोनाइज़ेशन या प्रतिकृति प्रक्रिया को तोड़ता है, तो स्रोत और गंतव्य तालिकाओं के बीच स्कीमा अंतर के कारण, आपको स्कीमा अंतर की पहचान करने के लिए एक आसान और तेज़ तरीका खोजने की आवश्यकता है, बनाने के लिए तालिकाओं को बदलें दोनों पक्षों में समान स्कीमा और डेटा सिंक्रनाइज़ेशन प्रक्रिया को फिर से शुरू करें।

अन्य स्थितियों में, यदि दो तालिकाओं का डेटा और स्कीमा समान हैं या नहीं, तो आपको हाँ या नहीं में उत्तर प्राप्त करने के लिए एक आसान तरीका चाहिए। इस लेख में, हम दो तालिकाओं के बीच डेटा और स्कीमा की तुलना करने के विभिन्न तरीकों से गुजरेंगे। इस आलेख में प्रदान की गई विधियां अलग-अलग डेटाबेस में होस्ट की गई तालिकाओं की तुलना करेंगी, जो कि अधिक जटिल परिदृश्य है, और एक ही डेटाबेस में स्थित तालिकाओं की अलग-अलग नामों से तुलना करने के लिए भी आसानी से उपयोग किया जा सकता है।

टेबल डेटा और स्कीमा की तुलना करने के लिए उपयोग किए जा सकने वाले विभिन्न तरीकों और उपकरणों का वर्णन करने से पहले, हम दो नए डेटाबेस बनाकर और प्रत्येक डेटाबेस में एक टेबल बनाकर, इन दो तालिकाओं के बीच एक छोटे डेटा प्रकार के अंतर के साथ अपना डेमो वातावरण तैयार करेंगे, जैसा कि क्रिएट डेटाबेस और क्रिएट टेबल टी-एसक्यूएल स्टेटमेंट में दिखाया गया है:

CREATE DATABASE TESTDB
CREATE DATABASE TESTDB2
CREATE TABLE TESTDB.dbo.FirstComTable
( ID INT IDENTITY (1,1) PRIMARY KEY,
  FirstName VARCHAR (50),
  LastName VARCHAR (50),
  Address VARCHAR (500)
)
GO
CREATE TABLE TESTDB2.dbo.FirstComTable
( ID INT IDENTITY (1,1) PRIMARY KEY,
  FirstName VARCHAR (50),
  LastName VARCHAR (50),
  Address NVARCHAR (400)
)
GO

डेटाबेस और टेबल बनाने के बाद, हम दो टेबल को पांच समान पंक्तियों से भरेंगे, फिर पहली टेबल में ही एक और नया रिकॉर्ड डालें, जैसा कि नीचे टी-एसक्यूएल स्टेटमेंट में INSERT INTO में दिखाया गया है:

INSERT INTO TESTDB.dbo.FirstComTable VALUES ('AAA','BBB','CCC')
GO 5
INSERT INTO TESTDB2.dbo.FirstComTable VALUES ('AAA','BBB','CCC')
GO 5
INSERT INTO TESTDB.dbo.FirstComTable VALUES ('DDD','EEE','FFF')
GO

अब परीक्षण वातावरण डेटा और स्कीमा तुलना विधियों का वर्णन शुरू करने के लिए तैयार है।

बाएं जॉइन का उपयोग करके तालिका डेटा की तुलना करें

LEFT JOIN T-SQL कीवर्ड का उपयोग दो तालिकाओं से डेटा प्राप्त करने के लिए किया जाता है, बाईं तालिका से सभी रिकॉर्ड और दाईं तालिका से केवल मिलान किए गए रिकॉर्ड और दाईं तालिका से NULL मान जब दो तालिकाओं के बीच कोई मेल नहीं होता है।

डेटा तुलना उद्देश्यों के लिए, हमारे मामले में आईडी कॉलम जैसे सामान्य अद्वितीय कॉलम के आधार पर, दो तालिकाओं की तुलना करने के लिए बाएं जॉइन कीवर्ड का उपयोग किया जा सकता है, जैसा कि नीचे दिए गए चयन कथन में है:

SELECT *
FROM TESTDB.dbo.FirstComTable F
LEFT JOIN TESTDB2.dbo.FirstComTable S
ON F.ID =S.ID
से जुड़ें

पिछली क्वेरी दो तालिकाओं में मौजूद सामान्य पांच पंक्तियों को वापस कर देगी, जो पहली तालिका में मौजूद पंक्ति के अलावा और दूसरी तालिका से गायब है, परिणाम के दाईं ओर NULL मान दिखा कर, जैसा कि नीचे दिखाया गया है:

आप पिछले परिणाम से आसानी से प्राप्त कर सकते हैं कि, पहली तालिका में मौजूद छठा कॉलम दूसरी तालिका से छूट गया है। तालिकाओं के बीच पंक्तियों को सिंक्रनाइज़ करने के लिए, आपको मैन्युअल रूप से दूसरी तालिका में नया रिकॉर्ड सम्मिलित करना होगा। LEFT JOIN विधि नई पंक्तियों को सत्यापित करने में सहायक है लेकिन कॉलम मानों को अद्यतन करने के मामले में मदद नहीं करेगी। यदि आप 5वीं पंक्ति का पता कॉलम मान बदलते हैं, तो LEFT JOIN विधि उस परिवर्तन का पता नहीं लगा पाएगी जैसा कि नीचे स्पष्ट रूप से दिखाया गया है:

खंड को छोड़कर तालिका डेटा की तुलना करें

EXCEPT कथन पहली क्वेरी (बाएं क्वेरी) से पंक्तियां लौटाता है जो दूसरी क्वेरी (दाएं क्वेरी) से वापस नहीं आती हैं। दूसरे शब्दों में, EXCEPT स्टेटमेंट दो SELECT स्टेटमेंट्स या टेबल्स के बीच का अंतर लौटाएगा, जिससे हमें इन टेबल्स में डेटा की तुलना करने में आसानी होती है।
EXCEPT स्टेटमेंट का इस्तेमाल पहले बनाई गई टेबल्स में डेटा की तुलना करने के लिए किया जा सकता है, पहली तालिका से SELECT * क्वेरी और दूसरी तालिका से SELECT * क्वेरी के बीच अंतर लेकर, नीचे दिए गए T-SQL स्टेटमेंट का उपयोग करके:

SELECT * FROM TESTDB.dbo.FirstComTable F
EXCEPT 
SELECT * FROM TESTDB2.dbo. FirstComTable S

पिछली क्वेरी का परिणाम वह पंक्ति होगी जो पहली तालिका में उपलब्ध है और दूसरी तालिका में उपलब्ध नहीं है, जैसा कि नीचे दिखाया गया है:

दो तालिकाओं की तुलना करने के लिए EXCEPT कथन का उपयोग करना LEFT JOIN कथन से बेहतर है, अद्यतन रिकॉर्ड डेटा अंतर परिणाम में पकड़े जाएंगे। मान लें कि हमने दूसरी तालिका में पंक्ति संख्या 5 का पता अपडेट किया है, और फिर से EXCEPT स्टेटमेंट का उपयोग करके अंतर की जाँच की, आप देखेंगे कि पंक्ति संख्या 5 अंतर परिणाम के साथ नीचे दिखाए गए अनुसार वापस आ जाएगी:

दो तालिकाओं में डेटा की तुलना करने के लिए EXCEPT कथन का उपयोग करने का एकमात्र नुकसान यह है कि आपको दूसरी तालिका में अनुपलब्ध रिकॉर्ड के लिए INSERT कथन लिखकर डेटा को मैन्युअल रूप से सिंक्रनाइज़ करने की आवश्यकता है। ध्यान रखें कि तुलना के लिए उपयोग की जाने वाली एक अनूठी कुंजी के साथ, तुलना की जाने वाली दो तालिकाओं को सही परिणाम प्राप्त करने के लिए कुंजी तालिकाएं हैं। यदि हम EXCEPT स्टेटमेंट के दोनों पक्षों में सेलेक्ट स्टेटमेंट से आईडी यूनिक कॉलम को हटाते हैं, और बाकी नॉन-की कॉलम को सूचीबद्ध करते हैं, जैसा कि नीचे दिए गए स्टेटमेंट में है:

SELECT FirstName, LastName, Address FROM TESTDB.dbo. FirstComTable F
EXCEPT 
SELECT FirstName, LastName, Address FROM TESTDB2.dbo. FirstComTable S

परिणाम दिखाएगा कि केवल नए रिकॉर्ड लौटाए गए हैं, और अपडेट किए गए रिकॉर्ड सूचीबद्ध नहीं होंगे, जैसा कि नीचे दिए गए परिणाम में दिखाया गया है:

यूनियन ऑल ... ग्रुप बाय का उपयोग करके टेबल्स डेटा की तुलना करें

UNION ALL स्टेटमेंट का उपयोग एक अद्वितीय कुंजी कॉलम के आधार पर दो तालिकाओं में डेटा की तुलना करने के लिए भी किया जा सकता है। दो तालिकाओं के बीच के अंतर को वापस करने के लिए UNION ALL स्टेटमेंट का उपयोग करने के लिए, आपको SELECT स्टेटमेंट में तुलना करने के लिए कॉलम को सूचीबद्ध करना होगा और ग्रुप बाय क्लॉज में इन कॉलम का उपयोग करना होगा, जैसा कि नीचे T-SQL क्वेरी में दिखाया गया है:

SELECT DISTINCT * 
  FROM
  (
  SELECT * FROM 
  ( SELECT * FROM TESTDB.dbo. FirstComTable      
  UNION ALL
    SELECT * FROM TESTDB2.dbo. FirstComTable) Tbls
    GROUP BY ID,FirstName, LastName, Address
    HAVING COUNT(*)<2) Diff

और केवल वह पंक्ति जो पहली तालिका में मौजूद है और दूसरी तालिका से छूटी हुई है, उसे नीचे दिखाए अनुसार लौटाया जाएगा:

रिकॉर्ड अपडेट करने के मामले में पिछली क्वेरी भी ठीक काम करेगी लेकिन एक अलग तरीके से। यह नीचे दिखाए गए पंक्ति संख्या 5 के मामले में, दोनों तालिकाओं से अपडेट किए गए कॉलम के अलावा नए सम्मिलित रिकॉर्ड लौटाएगा:

SQL सर्वर डेटा टूल का उपयोग करके तालिका डेटा की तुलना करें

SQL सर्वर डेटा टूल्स, जिसे SSDT के रूप में भी जाना जाता है, Microsoft Visual Studio पर निर्मित, दो अलग-अलग डेटाबेस में होस्ट किए गए एक अद्वितीय कुंजी कॉलम के आधार पर एक ही नाम के साथ दो तालिकाओं में डेटा की तुलना करने के लिए आसानी से उपयोग किया जा सकता है और इन तालिकाओं में डेटा को सिंक्रनाइज़ किया जा सकता है। , या बाद में उपयोग करने के लिए एक सिंक्रनाइज़ेशन स्क्रिप्ट जेनरेट करें।

खुली हुई SSDT विंडो से, टूल्स मेनू -> SQL सर्वर सूची पर क्लिक करें और नई डेटा तुलना चुनें। विकल्प, जैसा कि नीचे दिखाया गया है:

प्रदर्शित कनेक्शन विंडो में, आप पहले से जुड़े सत्रों में से चुन सकते हैं, या SQL सर्वर नाम, क्रेडेंशियल और डेटाबेस नाम के साथ कनेक्शन गुण विंडो भर सकते हैं, फिर कनेक्ट पर क्लिक करें। , जैसा कि नीचे दिखाया गया है:

प्रदर्शित नए डेटा तुलना विज़ार्ड में, स्रोत और लक्ष्य डेटाबेस नाम और तालिकाओं की तुलना प्रक्रिया में उपयोग किए गए तुलना विकल्पों को निर्दिष्ट करें, फिर अगला पर क्लिक करें , जैसा कि नीचे दिखाया गया है:

अगली विंडो में, तालिका का नाम निर्दिष्ट करें, जो स्रोत और लक्ष्य डेटाबेस में समान नाम होना चाहिए, जिसकी तुलना दोनों डेटाबेस में की जाएगी और क्लिक करें समाप्त करें , नीचे के रूप में:

प्रदर्शित परिणाम आपको उन अभिलेखों की संख्या दिखाएगा जो स्रोत में पाए गए हैं और लक्ष्य एक से छूट गए हैं, लक्ष्य में पाए गए हैं और स्रोत से छूट गए हैं, एक ही कुंजी और विभिन्न कॉलम मानों के साथ अद्यतन रिकॉर्ड की संख्या (विभिन्न रिकॉर्ड) और अंत में दोनों तालिकाओं में पाए गए समान अभिलेखों की संख्या, जैसा कि नीचे दिखाया गया है:

पिछले परिणाम में तालिका के नाम पर क्लिक करें, आपको इन निष्कर्षों का विस्तृत दृश्य मिलेगा, जैसा कि नीचे दिखाया गया है:

आप स्रोत और लक्ष्य तालिकाओं को सिंक्रनाइज़ करने के लिए स्क्रिप्ट उत्पन्न करने के लिए उसी उपकरण का उपयोग कर सकते हैं या लक्ष्य तालिका को सीधे लापता या अलग-अलग परिवर्तनों के साथ अपडेट कर सकते हैं, जैसा कि नीचे दिया गया है:

यदि आप जनरेट स्क्रिप्ट विकल्प पर क्लिक करते हैं, तो लक्ष्य तालिका में लापता कॉलम के साथ एक INSERT स्टेटमेंट प्रदर्शित होगा, जैसा कि नीचे दिखाया गया है:
BEGIN TRANSACTION

BEGIN TRANSACTION
SET IDENTITY_INSERT [dbo].[FirstComTable] ON
INSERT INTO [dbo].[FirstComTable] ([ID], [FirstName], [LastName], [Address]) VALUES (6, N'DDD', N'EEE', N'FFF')
SET IDENTITY_INSERT [dbo].[FirstComTable] OFF
COMMIT TRANSACTION

लक्ष्य अपडेट करें विकल्प का चयन करने से पहले आपसे परिवर्तन करने के लिए आपकी पुष्टि के लिए कहा जाएगा, जैसा कि नीचे दिए गए संदेश में है:

तुल्यकालन के बाद, आप देखेंगे कि दो तालिकाओं में डेटा समान होगा, जैसा कि नीचे दिखाया गया है:

“SQL सर्वर के लिए dbForge Studio” तृतीय-पक्ष टूल का उपयोग करके तालिका डेटा की तुलना करें

SQL सर्वर की दुनिया में, आप बड़ी संख्या में तृतीय-पक्ष उपकरण पा सकते हैं जो डेटाबेस प्रशासकों और डेवलपर्स के जीवन को आसान बनाते हैं। इन उपकरणों में से एक, जो डेटाबेस प्रशासन कार्यों को केक का एक टुकड़ा बनाता है, SQL सर्वर के लिए dbForge स्टूडियो है, जो हमें डेटाबेस प्रशासन और विकास कार्यों को करने के आसान तरीके प्रदान करता है। यह टूल डेटाबेस तालिकाओं में डेटा की तुलना करने और इन तालिकाओं को सिंक्रनाइज़ करने में भी हमारी मदद कर सकता है।

तुलना मेनू से, नई डेटा तुलना choose चुनें विकल्प, जैसा कि नीचे दिखाया गया है:

नए डेटा तुलना विज़ार्ड से, स्रोत और लक्ष्य डेटाबेस निर्दिष्ट करें, फिर अगला . क्लिक करें :

उपलब्ध मैपिंग और तुलना विकल्पों की विस्तृत श्रृंखला में से उपयुक्त विकल्प चुनें और अगला . पर क्लिक करें :

डेटा तुलना प्रक्रिया में भाग लेने वाली तालिका या तालिकाओं का नाम निर्दिष्ट करें। स्रोत और लक्ष्य डेटाबेस तालिकाओं के बीच कोई स्कीमा अंतर होने की स्थिति में विज़ार्ड एक चेतावनी संदेश प्रदर्शित करेगा। तुलना करें Click क्लिक करें आगे बढ़ने के लिए:

अंतिम परिणाम आपको विस्तार से दिखाएगा, स्रोत और लक्ष्य तालिकाओं के बीच डेटा अंतर, क्लिक करने की क्षमता के साथ स्रोत और गंतव्य तालिकाओं को सिंक्रनाइज़ करने के लिए, जैसा कि नीचे दिखाया गया है:

sys.columns का उपयोग करके टेबल्स स्कीमा की तुलना करें

जैसा कि इस आलेख की शुरुआत में उल्लेख किया गया है, किसी तालिका को दोहराने या संग्रहीत करने के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि स्रोत और लक्ष्य तालिका का स्कीमा समान है। SQL सर्वर हमें एक ही डेटाबेस या विभिन्न डेटाबेस में तालिकाओं के स्कीमा की तुलना करने के विभिन्न तरीके प्रदान करता है। पहली विधि sys.columns सिस्टम कैटलॉग दृश्य को क्वेरी कर रही है, जो किसी ऑब्जेक्ट के प्रत्येक कॉलम के लिए एक पंक्ति देता है जिसमें प्रत्येक कॉलम के गुणों के साथ एक कॉलम होता है।

विभिन्न डेटाबेस में स्थित तालिकाओं के स्कीमा की तुलना करने के लिए, आपको किसी अन्य डेटाबेस में होस्ट की गई तालिका प्रदान करने में सक्षम हुए बिना, वर्तमान डेटाबेस के अंतर्गत तालिका नाम के साथ sys.columns प्रदान करने की आवश्यकता है। इसे प्राप्त करने के लिए, हम sys.columns को दो बार क्वेरी करेंगे, प्रत्येक क्वेरी के परिणाम को एक अस्थायी तालिका में सहेजेंगे और अंत में EXCEPT T-SQL कमांड का उपयोग करके इन दो प्रश्नों के परिणाम की तुलना करेंगे, जैसा कि नीचे स्पष्ट रूप से दिखाया गया है:

USE TESTDB
SELECT name, system_type_id, user_type_id,max_length, precision,scale, is_nullable, is_identity INTO #DBSchema FROM sys.columns
WHERE object_id = OBJECT_ID(N'dbo.FirstComTable')
GO
USE TestDB2
GO
SELECT name, system_type_id, user_type_id,max_length, precision,scale, is_nullable, is_identity INTO #DB2Schema FROM sys.columns
WHERE object_id = OBJECT_ID(N'dbo.FirstComTable ');

GO 
SELECT * FROM #DBSchema
EXCEPT 
SELECT * FROM #DB2Schema

परिणाम हमें दिखाएगा कि, इन दो तालिकाओं में पता कॉलम की परिभाषा अलग है, सटीक अंतर के बारे में कोई विशेष जानकारी नहीं है, जैसा कि नीचे दिखाया गया है:

INFORMATION_SCHEMA.COLUMNS का उपयोग करके तालिका स्कीमा की तुलना करें

INFORMATION_SCHEMA.COLUMNS सिस्टम दृश्य का उपयोग तालिका नाम प्रदान करके विभिन्न तालिकाओं के स्कीमा की तुलना करने के लिए भी किया जा सकता है। फिर से, विभिन्न डेटाबेस में होस्ट की गई दो तालिकाओं की तुलना करने के लिए, हम INFORMATION_SCHEMA.COLUMNS को दो बार क्वेरी करेंगे, प्रत्येक क्वेरी के परिणाम को एक अस्थायी तालिका में रखेंगे और अंत में EXCEPT T-SQL कमांड का उपयोग करके इन दो प्रश्नों के परिणाम की तुलना करेंगे, जैसा कि दिखाया गया है स्पष्ट रूप से नीचे:

USE TestDB
SELECT COLUMN_NAME, IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION,NUMERIC_SCALE  INTO #DBSchema FROM [INFORMATION_SCHEMA].[COLUMNS] SC1
WHERE SC1.TABLE_NAME='FirstComTable'
GO
USE TestDB2
SELECT COLUMN_NAME, IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION,NUMERIC_SCALE INTO #DB2Schema FROM [INFORMATION_SCHEMA].[COLUMNS] SC2
 WHERE SC2.TABLE_NAME='FirstComTable'
GO 
SELECT * FROM #DBSchema
EXCEPT 
SELECT * FROM #DB2Schema

और परिणाम किसी भी तरह पिछले एक के समान होगा, यह दर्शाता है कि इन दो तालिकाओं में पता कॉलम परिभाषा अलग है, सटीक अंतर के बारे में कोई विशेष जानकारी नहीं है, जैसा कि नीचे दिखाया गया है:

dm_exec_describe_first_result_set का उपयोग करके तालिका स्कीमा की तुलना करें

टेबल स्कीमा की तुलना dm_exec_describe_first_result_set डायनेमिक मैनेजमेंट फ़ंक्शन को क्वेरी करके भी की जा सकती है, जो एक पैरामीटर के रूप में एक Transact-SQL स्टेटमेंट लेता है और स्टेटमेंट के लिए सेट किए गए पहले परिणाम के मेटाडेटा का वर्णन करता है।

दो तालिकाओं के स्कीमा की तुलना करने के लिए, आपको dm_exec_describe_first_result_set DMF को अपने साथ जोड़ना होगा, प्रत्येक तालिका से एक पैरामीटर के रूप में SELECT कथन प्रदान करना होगा, जैसा कि नीचे T-SQL क्वेरी में है:

SELECT FT.name , ST.name  , 
FT.system_type_name  , ST.system_type_name ,
FT.max_length  , ST.max_length ,
FT.precision  , ST.precision ,
FT.scale  , ST.scale ,
FT.is_nullable  , ST.is_nullable , 
FT.is_identity_column  , ST.is_identity_column 
FROM sys.dm_exec_describe_first_result_set (N'SELECT * FROM TestDB.DBO.FirstComTable', NULL, 0) FT
LEFT OUTER JOIN  sys.dm_exec_describe_first_result_set (N'SELECT * FROM TestDB2.DBO.FirstComTable', NULL, 0) ST
ON FT.Name =ST.Name
GO

इस बार परिणाम स्पष्ट होगा, जैसा कि आप आँख से तुलना कर सकते हैं, दो तालिकाओं के बीच का अंतर, जो कि पता कॉलम का आकार और प्रकार है, जैसा कि नीचे दिखाया गया है:

SQL सर्वर डेटा टूल्स का उपयोग करके टेबल्स स्कीमा की तुलना करें

SQL सर्वर डेटा टूल्स का उपयोग विभिन्न डेटाबेस में स्थित तालिकाओं के स्कीमा की तुलना करने के लिए भी किया जा सकता है। टूल्स मेनू के अंतर्गत, नई स्कीमा तुलना चुनें SQL सर्वर विकल्प सूची से विकल्प, जैसा कि नीचे दिखाया गया है:

कनेक्शन पैरामीटर प्रदान करने के बाद, तुलना करें बटन पर क्लिक करें:

तुलना परिणाम आपको विशिष्ट रूप से क्रिएट टेबल टी-एसक्यूएल कमांड के आकार में दो तालिकाओं के बीच स्कीमा अंतर दिखाएगा, जैसा कि नीचे स्नैपशॉट में छायांकित है:

आप आसानी से क्लिक कर सकते हैं तालिका स्कीमा को सिंक्रनाइज़ करने के लिए या क्लिक करें परिवर्तन को स्क्रिप्ट करने और बाद में इसे निष्पादित करने के लिए, जैसा कि नीचे दिखाया गया है:

SQL सर्वर थर्ड पार्टी टूल के लिए dbForge Studio का उपयोग करके टेबल्स स्कीमा की तुलना करें

SQL सर्वर टूल के लिए dbForge Studio हमें विभिन्न डेटाबेस तालिकाओं के स्कीमा की तुलना करने की क्षमता प्रदान करता है। तुलना मेनू से,नई स्कीमा तुलना . चुनें विकल्प, जैसा कि नीचे दिया गया है:

स्रोत और लक्ष्य डेटाबेस दोनों के कनेक्शन गुणों को निर्दिष्ट करने के बाद, उपलब्ध विकल्पों में से उपयुक्त मानचित्रण विकल्प चुनें और अगला पर क्लिक करें। :

वे स्कीमा चुनें जिनसे आप उसके ऑब्जेक्ट की तुलना करेंगे और अगला . क्लिक करें :

वह तालिका या तालिकाएँ निर्दिष्ट करें जो स्कीमा तुलना प्रक्रिया में भाग लेंगी और तुलना करें . पर क्लिक करें , यदि आप ऑब्जेक्ट फ़िल्टर विंडो में डिफ़ॉल्ट सेटिंग्स को बदलना छोड़ना चाहते हैं, जैसा कि नीचे दिया गया है:

प्रदर्शित तुलना परिणाम आपको दो टेबल स्कीमा के बीच का अंतर दिखाएगा, डेटा प्रकार के उस हिस्से को बिल्कुल हाइलाइट करके जो दो कॉलम के बीच भिन्न होता है, यह निर्दिष्ट करने की क्षमता के साथ कि दो तालिकाओं को सिंक्रनाइज़ करने के लिए क्या कार्रवाई की जानी चाहिए, जैसा कि नीचे दिखाया गया है :

यदि आप दो तालिकाओं के स्कीमा को सिंक्रनाइज़ करने की व्यवस्था करते हैं, तो बटन पर क्लिक करें और स्कीमा सिंक्रोनाइज़ेशन विज़ार्ड में निर्दिष्ट करें कि क्या आप लक्ष्य तालिका पर सीधे परिवर्तन को निष्पादित करने का प्रबंधन करते हैं, या बस इसे भविष्य में उपयोग करने के लिए स्क्रिप्ट करें, जैसा कि नीचे दिया गया है:

उपयोगी कड़ियाँ:

  • सेट ऑपरेटर्स - सिवाय और इंटरसेक्ट (ट्रांजैक्ट-एसक्यूएल)
  • सेट ऑपरेटर्स - यूनियन (ट्रांजैक्ट-एसक्यूएल)
  • SQL सर्वर डेटा टूल्स (SSDT) ​​डाउनलोड करें
  • संदर्भ डेटाबेस में डेटा के साथ एक या अधिक तालिकाओं में डेटा की तुलना और सिंक्रनाइज़ करें
  • sys.dm_exec_describe_first_result_set (ट्रांजैक्ट-एसक्यूएल)
  • sys.columns (ट्रांजैक्ट-एसक्यूएल)
  • सिस्टम सूचना स्कीमा दृश्य (ट्रांजैक्ट-एसक्यूएल)

उपयोगी टूल:

dbForge स्कीमा SQL सर्वर के लिए तुलना करें - विश्वसनीय उपकरण जो SQL सर्वर पर डेटाबेस की तुलना और सिंक्रनाइज़ करते समय आपके समय और प्रयास को बचाता है।

SQL सर्वर के लिए dbForge डेटा तुलना - बड़े डेटा के साथ काम करने में सक्षम शक्तिशाली SQL तुलना उपकरण।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सभी संग्रहीत कार्यविधियों को सूचीबद्ध करने की क्वेरी

  2. क्रिस्टल रिपोर्ट बनाम माइक्रोसॉफ्ट एसक्यूएल सर्वर रिपोर्टिंग सेवाएं

  3. SQL सर्वर (T-SQL) में CHAR () फ़ंक्शन कैसे काम करता है

  4. एक कॉलम (टी-एसक्यूएल) में एकाधिक मान कैसे वापस करें?

  5. ऑटोइनक्रिकमेंट वाले कॉलम के लिए स्टार्ट वैल्यू सेट करें