ऑपरेशन के बराबर में "SQL_Latin1_General_CP1_CI_AS" और "Latin1_General_CI_AS" के बीच टकराव संघर्ष को हल नहीं कर सकता


344

मेरे पास निम्न कोड है

SELECT tA.FieldName As [Field Name],
       COALESCE(tO_A.[desc], tO_B.[desc], tO_C.Name, tA.OldVAlue) AS [Old Value],
       COALESCE(tN_A.[desc], tN_B.[desc], tN_C.Name, tA.NewValue) AS [New Value],
       U.UserName AS [User Name],
       CONVERT(varchar, tA.ChangeDate) AS [Change Date] 
  FROM D tA
       JOIN 
       [DRTS].[dbo].[User] U 
         ON tA.UserID = U.UserID
       LEFT JOIN 
       A tO_A 
         on tA.FieldName = 'AID' 
        AND tA.oldValue = CONVERT(VARCHAR, tO_A.ID)
       LEFT JOIN 
       A tN_A 
         on tA.FieldName = 'AID' 
        AND tA.newValue = CONVERT(VARCHAR, tN_A.ID)
       LEFT JOIN 
       B tO_B 
         on tA.FieldName = 'BID' 
        AND tA.oldValue = CONVERT(VARCHAR, tO_B.ID)
       LEFT JOIN 
       B tN_B 
         on tA.FieldName = 'BID' 
        AND tA.newValue = CONVERT(VARCHAR, tN_B.ID)
       LEFT JOIN 
       C tO_C 
         on tA.FieldName = 'CID' 
        AND tA.oldValue = tO_C.Name
       LEFT JOIN 
       C tN_C 
         on tA.FieldName = 'CID' 
        AND tA.newValue = tN_C.Name
 WHERE U.Fullname = @SearchTerm
ORDER BY tA.ChangeDate

जब कोड चलाने में मुझे त्रुटि मिल रही है, सी। के लिए दो जॉइन करने के बाद शीर्षक में चिपकाई गई। मुझे लगता है कि इस तथ्य के साथ कुछ हो सकता है कि मैं SQL Server 2008 का उपयोग कर रहा हूं और इस db की एक कॉपी को पुनर्स्थापित कर दिया है मेरी मशीन जो 2005 है।

जवाबों:


307

आपके पास अपनी तालिका में दो अलग-अलग समतलों का बेमेल मेल है। आप इस क्वेरी का उपयोग करके अपनी तालिका के प्रत्येक कॉलम की जाँच कर सकते हैं:

SELECT
    col.name, col.collation_name
FROM 
    sys.columns col
WHERE
    object_id = OBJECT_ID('YourTableName')

तार की आवश्यकता होती है और उपयोग किया जाता है जब आदेश और तार की तुलना करते हैं। यह आम तौर पर एक अच्छा विचार है कि आपके डेटाबेस में एक एकल, अद्वितीय कोलाजेशन का उपयोग किया जाता है - एक ही टेबल या डेटाबेस के भीतर विभिन्न कोलाज का उपयोग न करें - आप केवल परेशानी पूछ रहे हैं ...।

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

ALTER TABLE YourTableName
  ALTER COLUMN OffendingColumn
    VARCHAR(100) COLLATE Latin1_General_CI_AS NOT NULL

न घुलनेवाली तलछट

अद्यतन: अपने डेटाबेस में फुलटेक्स्ट इंडेक्स खोजने के लिए, इस क्वेरी का उपयोग करें:

SELECT
    fti.object_Id,
    OBJECT_NAME(fti.object_id) 'Fulltext index',
    fti.is_enabled,
    i.name 'Index name',
    OBJECT_NAME(i.object_id) 'Table name'
FROM 
    sys.fulltext_indexes fti
INNER JOIN 
    sys.indexes i ON fti.unique_index_id = i.index_id

फिर आप फुलटेक्स इंडेक्स का उपयोग कर छोड़ सकते हैं:

DROP FULLTEXT INDEX ON (tablename)

धन्यवाद marc जो कि वास्तव में उस चीज का प्रकार है जिसकी मैं तलाश कर रहा था, किसी एक टेबल को किसी बेवकूफ कारण से अलग किया गया था! मैं मानक टकराव को बदलने की कोशिश करूंगा और देखूंगा कि क्या होता है।
jhowe

अब मैं इसे प्राप्त कर रहा हूं: कॉलम को बदल या छोड़ नहीं सकता क्योंकि यह पूर्ण-पाठ खोज के लिए सक्षम है।
jhowe

1
उस स्थिति में, आपको अस्थायी रूप से उस तालिका पर अपना फुलटेक्स्ट इंडेक्स गिराना होगा, कोलाज को बदलना होगा, और फिर फुलटेक्स्ट इंडेक्स को फिर से बनाना होगा
marc_s

1
धन्यवाद ओपी, मैं एक अस्थायी तालिका स्थापित कर रहा था ताकि यह मदद मिले, लेकिन जैसा कि मैं तालिका को बदल नहीं सका, मुझे इसके साथ शुरू करने के लिए बस इसे सही ढंग से घोषित करने की आवश्यकता थी: इस प्रकार @ तालिका (तुलना करें वर्सेज) (50) संकलन SQL_Latin1_General_CP1_CI_AS पूरा नहीं हुआ)
FrostbiteXIII

1
क्यों कठबोली हम एक ही मेज पर 2 अलग अलग टकराव है। अगर मेरे पास 1 कॉलम है नवरचेर जिसमें केवल अंग्रेजी नाम और अन्य कॉलम रूसी अक्षरों के रूप में, अन्य कॉलम जापानी अक्षरों के रूप में हैं। मैं इसकी व्यवस्था कैसे करूं? क्या इन सभी में एक एकल संघन शामिल है?
बैटमसी

856

मैं निम्नलिखित कार्य करता हूं:

...WHERE 
    fieldname COLLATE DATABASE_DEFAULT = otherfieldname COLLATE DATABASE_DEFAULT

हर बार काम करता है। :)


68
यह एसओ पर सबसे उपयोगी पदों में से एक है
जेमी स्ट्रॉस

2
इस समाधान का उपयोग किया क्योंकि मैं एक ही db का उपयोग करते हुए दो विरासत प्रणालियों के साथ काम कर रहा था, इसलिए मुझे यकीन नहीं था कि अगर तालिकाओं के टकराव को बदलने से कार्यक्षमता टूट जाएगी।
पाओलोबेनो

5
यदि समान दो क्षेत्रों को अन्य स्थानों (तुलना, यूनियनों, मोटे, आदि ...) में एक साथ उपयोग किया जाता है, तो सुनिश्चित करें कि उनमें से प्रत्येक में भी निर्दिष्ट कॉलेशन है।
ज़ेरेफेथ

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

7
@ppumkin जबकि यह एक महान समाधान है, यह अभी भी केवल समस्या को टालता है, बजाय इसे हल करने के। जब तक आप प्रत्येक क्वेरी के लिए कोलाज को बदलना नहीं चाहते हैं, जो थकाऊ है और आशावादी प्रदर्शन नहीं है। हालांकि यह एक महान जवाब है, मुझे लगता है कि स्वीकृत उत्तर बेहतर है।
रोब

80

का प्रयोग करें collateअपने प्रश्न में खंड:

LEFT JOIN C tO_C on tA.FieldName = 'CID' AND tA.oldValue COLLATE Latin1_General_CI_AS = tO_C.Name  

मेरे पास वाक्यविन्यास बिल्कुल सही नहीं है (BOL की जांच करें), लेकिन आप क्वेरी के लिए टकराव को मक्खी पर बदलने के लिए कर सकते हैं - आपको प्रत्येक सम्मिलित के लिए खंड जोड़ने की आवश्यकता हो सकती है।

संपादित करें: मुझे एहसास हुआ कि यह काफी सही नहीं था - आप जिस क्षेत्र को बदलना चाहते हैं उसके बाद कोलाज का खंड चलता है - इस उदाहरण में मैंने tA.oldValueक्षेत्र पर कोलाज को बदल दिया ।


29

उन फ़ील्ड को पहचानें जिनके लिए वह इस त्रुटि को फेंक रहा है और उनके साथ जोड़ें: COLATATE DATABASE_DEFAULT

कोड फ़ील्ड में दो तालिकाएँ शामिल हैं:

...
and table1.Code = table2.Code
...

अपनी क्वेरी अपडेट करें:

...
and table1.Code COLLATE DATABASE_DEFAULT = table2.Code COLLATE DATABASE_DEFAULT
...

धन्यवाद। एक ठेस डेटाबेस में काम करते समय हम हमेशा डेटाबेस संरचना को बदल नहीं सकते हैं जैसा कि स्वीकृत उत्तर द्वारा सुझाया गया है।
जेनिफर वुड

20

यह आसानी से हो सकता है जब आपके पास 2 अलग-अलग डेटाबेस और विशेष रूप से 2 अलग-अलग डेटाबेस से 2 अलग-अलग सर्वर हों। सबसे अच्छा विकल्प यह है कि इसे एक आम संग्रह में बदल दिया जाए और इसमें शामिल या तुलना की जाए।

SELECT 
   *
FROM sd
INNER JOIN pd ON sd.SCaseflowID COLLATE Latin1_General_CS_AS = pd.PDebt_code COLLATE Latin1_General_CS_AS

13

@ वाल्कीरी कमाल का जवाब। सोचा था कि मैं एक मामले में डाल सकता हूं जब एक उपश्रेणी के साथ एक ही प्रदर्शन एक संग्रहीत प्रक्रिया का आग्रह करता है, जैसा कि मैंने सोचा था कि अगर आपका जवाब इस मामले में काम करता है, और यह भयानक था।

...WHERE fieldname COLLATE DATABASE_DEFAULT in (
          SELECT DISTINCT otherfieldname COLLATE DATABASE_DEFAULT
          FROM ...
          WHERE ...
        )


6

मूल कारण यह है कि आपने जिस स्कील सर्वर से स्कीमा लिया था, उसमें एक कोलाजेशन होता है जो आपके स्थानीय इंस्टॉलेशन से भिन्न होता है। यदि आप टकराव के बारे में चिंता नहीं करना चाहते हैं तो SQL सर्वर 2008 डेटाबेस के रूप में समान टकराव का उपयोग करके स्थानीय रूप से SQL सर्वर स्थापित करें।


एक ही मुद्दा था, आपको पहले अपने सर्वर और डेटाबेस की संपत्ति की जांच करने की ज़रूरत है कि क्या उनके पास समान टक्कर है
मदन

5

त्रुटि (कई के बीच टकराव संघर्ष को हल नहीं कर सकती है ...) आमतौर पर कई डेटाबेस से डेटा की तुलना करते समय होती है।

चूंकि अब आप डेटाबेस के कोलाज को नहीं बदल सकते हैं, COLLATE DATABASE_DEFAULT का उपयोग करें।

----------
AND db1.tbl1.fiel1 COLLATE DATABASE_DEFAULT =db2.tbl2.field2 COLLATE DATABASE_DEFAULT 

यह पहले से दिए गए उत्तर से अलग नहीं है: stackoverflow.com/a/1607725/479251
Pac0

4

मुझे पहले भी ऐसा कुछ मिला है, और हमने पाया कि 2 तालिकाओं के बीच का टकराव अलग था।

जांचें कि ये समान हैं।


4

Marc_s के जवाब की बदौलत मैंने अपनी मूल समस्या को हल किया - इसे एक कदम आगे ले जाने के लिए प्रेरित किया और एक बार में एक पूरी तालिका को बदलने के लिए एक दृष्टिकोण पोस्ट किया - tsql स्क्रिप्ट में परिवर्तन कॉलम स्टेटमेंट उत्पन्न करने के लिए:

DECLARE @tableName VARCHAR(MAX)
SET @tableName = 'affiliate'
--EXEC sp_columns @tableName
SELECT  'Alter table ' + @tableName + ' alter column ' + col.name
        + CASE ( col.user_type_id )
            WHEN 231
            THEN ' nvarchar(' + CAST(col.max_length / 2 AS VARCHAR) + ') '
          END + 'collate Latin1_General_CI_AS ' + CASE ( col.is_nullable )
                                                    WHEN 0 THEN ' not null'
                                                    WHEN 1 THEN ' null'
                                                  END
FROM    sys.columns col
WHERE   object_id = OBJECT_ID(@tableName)

हो जाता है: पहले से संबद्ध संबद्ध कॉलम COLTN myTable NVARCHAR (4000) COLLATE लैटिन 1_General_CI_AS नहीं है

मैं col.max_length / 2 की आवश्यकता से हैरान हूं -


मुझे लगता है कि दो से भाग की आवश्यकता है क्योंकि लंबाई आंतरिक रूप से बाइट्स की संख्या के रूप में संग्रहीत होती है। नवरचचर को वर्ण के अनुसार दो बाइट्स प्रति वर्ण लगते हैं।
ज़ेबी

महान काम, कैसे कभी ncha डेटा प्रकारों के लिए क्वेरी dosent गिनती ऊपर की वजह से शायद col.max_length / 2 -
इमरान

2

उन लोगों के लिए जिनके पास एक डेटाबेस डेटाबेस स्क्रिप्ट है (जैसा कि मेरा मामला था) डेटाबेस के लिए है जो इस समस्या का कारण बन रहा है आप कोलाज से मिलान करने के लिए निम्नलिखित क्रिएट स्क्रिप्ट का उपयोग कर सकते हैं:

-- Create Case Sensitive Database
CREATE DATABASE CaseSensitiveDatabase
COLLATE SQL_Latin1_General_CP1_CS_AS -- or any collation you require
GO
USE CaseSensitiveDatabase
GO
SELECT *
FROM sys.types
GO
--rest of your script here

या

-- Create Case In-Sensitive Database
CREATE DATABASE CaseInSensitiveDatabase
COLLATE SQL_Latin1_General_CP1_CI_AS -- or any collation you require
GO
USE CaseInSensitiveDatabase
GO
SELECT *
FROM sys.types
GO
--rest of your script here

यह सभी तालिकाओं पर वांछित टकराव को लागू करता है, जो कि बस मेरी जरूरत थी। यह एक सर्वर पर सभी डेटाबेस के लिए समान रूप से प्रयास करने और रखने के लिए आदर्श है। उम्मीद है की यह मदद करेगा।

निम्न लिंक पर अधिक जानकारी: SQL सर्वर - सर्वर पर अलग-अलग Collation के साथ डेटाबेस बनाना


2

मैंने निम्न स्क्रिप्ट बनाने के लिए इस साइट की सामग्री का उपयोग किया है जो सभी तालिकाओं में सभी स्तंभों के टकराव को बदलता है:

CREATE PROCEDURE [dbo].[sz_pipeline001_collation] 
    -- Add the parameters for the stored procedure here
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;


SELECT 'ALTER TABLE [' + SYSOBJECTS.Name + '] ALTER COLUMN [' + SYSCOLUMNS.Name + '] ' +
SYSTYPES.name + 
    CASE systypes.NAME
    WHEN 'text' THEN ' '
    ELSE
    '(' + RTRIM(CASE SYSCOLUMNS.length
    WHEN -1 THEN 'MAX'
    ELSE CONVERT(CHAR,SYSCOLUMNS.length)
    END) + ') ' 
    END

    + ' ' + ' COLLATE Latin1_General_CI_AS ' + CASE ISNULLABLE WHEN 0 THEN 'NOT NULL' ELSE 'NULL' END
    FROM SYSCOLUMNS , SYSOBJECTS , SYSTYPES
    WHERE SYSCOLUMNS.ID = SYSOBJECTS.ID
    AND SYSOBJECTS.TYPE = 'U'
    AND SYSTYPES.Xtype = SYSCOLUMNS.xtype
    AND SYSCOLUMNS.COLLATION IS NOT NULL
    AND NOT ( sysobjects.NAME LIKE 'sys%' )
    AND NOT ( SYSTYPES.name LIKE 'sys%' )

END

1
SYSCOLUMNS.lvar nvarchar स्तंभों को 2 से विभाजित किया जाना चाहिए
1616

2

बेमेल के स्तर की जांच करें जो बेमेल हो (सर्वर, डेटाबेस, टेबल, कॉलम, कैरेक्टर)।

यदि यह सर्वर है, तो इन चरणों ने मुझे एक बार मदद की:

  1. सर्वर बंद करो
  2. अपना sqlservr.exe उपकरण खोजें
  3. यह आदेश चलाएँ:

    sqlservr -m -T4022 -T3659 -s"name_of_insance" -q "name_of_collation"

  4. अपना sql सर्वर शुरू करें:

    net start name_of_instance

  5. अपने सर्वर के टकराव की फिर से जाँच करें।

यहाँ अधिक जानकारी है:

https://www.mssqltips.com/sqlservertip/3519/changing-sql-server-collation-after-installation/


2

यदि यह आपके DB के पूरे भाग में होता है तो बेहतर है कि आप अपने DB को बदल दें जैसे:

USE master;  
GO  
ALTER DATABASE MyOptionsTest  
COLLATE << INSERT COLATION REQUIRED >> ;  
GO  

--Verify the collation setting.  
SELECT name, collation_name  
FROM sys.databases  
WHERE name = N'<< INSERT DATABASE NAME >>';  
GO 

यहाँ संदर्भ


दुर्भाग्य से यह मौजूदा तालिकाओं के लिए
टकराव

2

Varchar और varchar (MAX) कॉलम से निपटने के लिए @ JustSteve के उत्तर में कोड जोड़ा गया:

DECLARE @tableName VARCHAR(MAX)
SET @tableName = 'first_notes'
--EXEC sp_columns @tableName
SELECT  'Alter table ' + @tableName + ' alter column ' + col.name
        + CASE ( col.user_type_id )
            WHEN 231
            THEN ' nvarchar(' + CAST(col.max_length / 2 AS VARCHAR) + ') '
            WHEN 167
            THEN ' varchar(' + CASE col.max_length 
                                WHEN -1 
                                THEN 'MAX'
                                ELSE 
                                CAST(col.max_length AS VARCHAR)
                                end
                                 + ') '
          END + 'collate Latin1_General_CI_AS ' + CASE ( col.is_nullable )
                                                    WHEN 0 THEN ' not null'
                                                    WHEN 1 THEN ' null'
                                                  END
FROM    sys.columns col
WHERE   object_id = OBJECT_ID(@tableName)

2

डेटाबेस में परिवर्तन किए बिना क्वेरी में इस समस्या को हल करने के लिए, आप "=" चिह्न के दूसरी तरफ भाव डाल सकते हैं

COLLATE SQL_Latin1_General_CP1_CI_AS

जैसा कि यहाँ बताया गया है


1

मेरे पास एक समान त्रुटि थी ("SQL_Latin1_General_CP1_CI_AS" और "SQL_Latin1_General_CP1250_CI_AS" के बीच टकराव संघर्ष को हल नहीं कर सकता), जब मैंने पुराने jdbc ड्राइवर का उपयोग किया था।

मैंने इसका समाधान Microsoft या ओपन-सोर्स प्रोजेक्ट jTDS से नए ड्राइवर को डाउनलोड करके किया ।


1

यहां हमने जो किया है, हमारी स्थिति में हमें मांग पर तारीख प्रतिबंध का उपयोग करके निष्पादित होने के लिए एक तदर्थ क्वेरी की आवश्यकता है, और क्वेरी को तालिका में परिभाषित किया गया है।

हमारी नई क्वेरी को विभिन्न डेटाबेस के बीच डेटा का मिलान करने और उन दोनों से डेटा शामिल करने की आवश्यकता है।

ऐसा लगता है कि संकलन iSeries / AS400 प्रणाली से डेटा आयात करने वाले db और हमारे रिपोर्टिंग डेटाबेस के बीच भिन्न है - यह विशिष्ट डेटा प्रकारों के कारण हो सकता है (जैसे नामों पर ग्रीक उच्चारण और इसी तरह)।

इसलिए हमने नीचे दिए गए ज्वाइन क्लॉज का इस्तेमाल किया:

...LEFT Outer join ImportDB..C4CTP C4 on C4.C4CTP COLLATE Latin1_General_CS_AS=CUS_Type COLLATE Latin1_General_CS_AS

1

आप 4 आसान चरणों का उपयोग करके आसानी से कर सकते हैं

  1. बैकअप अपने डेटाबेस, बस incase
  2. डेटाबेस कोलाजेशन को बदलें: राइट क्लिक डेटाबेस, प्रॉपर्टीज का चयन करें, विकल्पों पर जाएं और कॉलेशन को आवश्यक कोलाजेशन में बदलें।
  3. अपने सभी डेटाबेस ऑब्जेक्ट को ड्रॉप और रिक्रिएट करने के लिए एक स्क्रिप्ट बनाएं: अपने डेटाबेस पर राइट क्लिक करें, कार्यों का चयन करें, स्क्रिप्ट का चयन करें ... (सुनिश्चित करें कि आप ड्रॉप का चयन करें और विज़ार्ड के उन्नत विकल्पों पर बनाएं, स्कीमा और डेटा भी चुनें)
  4. ऊपर उत्पन्न स्क्रिप्ट चलाएँ

1
INSERT INTO eSSLSmartOfficeSource2.[dbo].DeviceLogs  (DeviceId,UserId,LogDate,UpdateFlag) 
SELECT DL1.DeviceId ,DL1.UserId COLLATE DATABASE_DEFAULT,DL1.LogDate 
,0 FROM eSSLSmartOffice.[dbo].DeviceLogs DL1 
WHERE  NOT EXISTS 
(SELECT DL2.DeviceId ,DL2.UserId COLLATE DATABASE_DEFAULT
,DL2.LogDate ,DL2.UpdateFlag 
FROM eSSLSmartOfficeSource2.[dbo].DeviceLogs DL2    
WHERE  DL1.DeviceId =DL2.DeviceId
 and DL1.UserId collate  Latin1_General_CS_AS=DL2.UserId collate  Latin1_General_CS_AS
  and DL1.LogDate =DL2.LogDate )

0

हो सकता है कि आपके डेटाबेस में कोई कोलाजेशन समस्या न हो, लेकिन यदि आपने अपने डेटाबेस की एक प्रति को मूल से भिन्न टकराव वाले सर्वर पर बैकअप से पुनर्स्थापित किया है, और आपका कोड अस्थायी तालिकाओं का निर्माण कर रहा है, तो उन अस्थायी तालिकाओं से टकराव होगा सर्वर और आपके डेटाबेस के साथ संघर्ष होगा।



0

मुझे एक समान आवश्यकता थी; इसी तरह के परिदृश्य के साथ किसी के लिए मेरे दृष्टिकोण का दस्तावेजीकरण ...

परिदृश्य

  • मेरे पास सही कॉलेशन के साथ एक क्लीन इंस्टाल का डेटाबेस है।
  • मेरे पास एक और डेटाबेस है जिसमें गलत कॉलेशन हैं।
  • मुझे पूर्व में परिभाषित कोलाजेशन का उपयोग करने के लिए बाद को अपडेट करने की आवश्यकता है।

समाधान

SQL सर्वर स्कीमा तुलना ( SQL सर्वर डेटा उपकरण / विज़ुअल स्टूडियो से) स्रोत (साफ इंस्टॉल) की तुलना गंतव्य (अमान्य टकराव के साथ db) के साथ करें।

मेरे मामले में मैंने सीधे दोनों डीबी की तुलना की; हालांकि आप एक परियोजना के माध्यम से काम करने के लिए आप के बीच मैन्युअल रूप से टुकड़े टुकड़े करने की अनुमति दे सकते हैं ...

  • विजुअल स्टूडियो चलाएं
  • एक नया SQL सर्वर डेटा प्रोजेक्ट बनाएँ
  • उपकरण, SQL सर्वर, नई स्कीमा तुलना पर क्लिक करें
  • स्रोत डेटाबेस का चयन करें
  • लक्ष्य डेटाबेस का चयन करें
  • विकल्प पर क्लिक करें (⚙)
    • के तहत Object Typesकेवल उन प्रकार आप में रुचि रखते हैं का चयन करें (मेरे लिए यह केवल था ViewsऔरTables )
    • के अंतर्गत Generalचयन के :
      • संभावित डेटा हानि पर ब्लॉक करें
      • डीडीएल ट्रिगर अक्षम और पुन: प्रयोज्य
      • क्रिप्टोग्राफ़िक प्रदाता फ़ाइल पथ पर ध्यान न दें
      • फ़ाइल और लॉग फ़ाइल पथ पर ध्यान न दें
      • फ़ाइल आकार पर ध्यान न दें
      • फ़ाइलसमूह प्लेसमेंट पर ध्यान न दें
      • पूर्ण पाठ कैटलॉग फ़ाइल पथ पर ध्यान न दें
      • कीवर्ड आवरण को अनदेखा करें
      • लॉगिन SIDs पर ध्यान न दें
      • उद्धृत पहचानकर्ताओं को अनदेखा करें
      • मार्ग जीवनकाल को नजरअंदाज करें
      • बयानों के बीच अर्धविराम पर ध्यान न दें
      • व्हाट्सएप को इग्नोर करें
      • स्क्रिप्ट रिफ्रेश मॉड्यूल
      • नए अवरोधों के लिए स्क्रिप्ट सत्यापन
      • कोलाज संगतता को सत्यापित करें
      • तैनाती की पुष्टि करें
  • तुलना पर क्लिक करें
    • विलोपन के लिए ध्वजांकित किसी भी वस्तु को अनचेक करें (NB: उन में अभी भी समतलीकरण समस्याएँ हो सकती हैं; लेकिन चूंकि वे हमारे स्रोत / टेम्पलेट db में परिभाषित नहीं हैं, हम नहीं जानते; किसी भी तरह से, यदि हम चाहें तो चीजों को खोना नहीं चाहते हैं; केवल टारगेट में बदलाव)। आप DELETEफ़ोल्डर पर राइट क्लिक करके और चयन करके एक बार में सभी को अनचेक कर सकते हैं EXCLUDE
    • इसी तरह किसी को भी बाहर रखें CREATE ऑब्जेक्ट के (यहां चूंकि वे लक्ष्य में मौजूद नहीं हैं, इसलिए वे वहां गलत समतलीकरण नहीं कर सकते हैं; चाहे उनका अस्तित्व किसी अन्य विषय के लिए एक प्रश्न हो)।
    • उस ऑब्जेक्ट की स्क्रिप्ट देखने के लिए CHANGE के अंतर्गत प्रत्येक ऑब्जेक्ट पर क्लिक करें। यह सुनिश्चित करने के लिए कि हम केवल कॉलेशन बदल रहे हैं (कुछ अन्य अंतरों का मैन्युअल रूप से पता लगा सकते हैं जिनका उपयोग आप उन वस्तुओं को मैन्युअल रूप से बाहर करना / संभालना चाहते हैं) करें।
  • Updateपरिवर्तनों को पुश करने के लिए क्लिक करें

इसमें अभी भी कुछ मैनुअल प्रयास शामिल हैं (उदाहरण के लिए जाँच करना कि आप केवल कोलाज को प्रभावित कर रहे हैं) - लेकिन यह आपके लिए निर्भरता को संभालता है।

इसके अलावा, आप मान्य स्कीमा का एक डेटाबेस प्रोजेक्ट रख सकते हैं ताकि आप अपने DBs के लिए एक सार्वभौमिक टेम्पलेट का उपयोग कर सकें, आपके पास अपडेट करने के लिए 1 से अधिक होना चाहिए, यह मानते हुए कि सभी लक्ष्य DBs एक ही स्कीमा के साथ समाप्त होने चाहिए।

आप किसी डेटाबेस प्रोजेक्ट में फ़ाइलों को खोजने / बदलने का उपयोग भी कर सकते हैं, क्या आपको वहां संशोधन की सेटिंग्स में बदलाव करना चाहिए (जैसे कि आप स्कीमा की तुलना करके अमान्य डेटाबेस से प्रोजेक्ट बना सकते हैं, प्रोजेक्ट फ़ाइलों में संशोधन कर सकते हैं, फिर स्रोत / लक्ष्य को चालू कर सकते हैं) स्कीमा आपके परिवर्तनों को डीबी में वापस लाने के लिए तुलना करती है)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.