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

SQL सर्वर डेटाबेस छँटाई बदलना

आपको WITH SCHEMABINDING remove को हटाना होगा आपके विचारों और तालिका-मूल्यवान कार्यों से। उन्हें पहचानने के लिए आप INFORMATION_SCHEMA . को क्वेरी कर सकते हैं दृश्य:

SELECT TABLE_SCHEMA, TABLE_NAME AS VIEW_NAME
FROM INFORMATION_SCHEMA.VIEWS
WHERE VIEW_DEFINITION LIKE '%SCHEMABINDING%'

SELECT ROUTINE_SCHEMA, ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%SCHEMABINDING%'
  1. पहले डेटाबेस का बैकअप लें।
  2. एक ALTER उत्पन्न करें सभी स्कीमा-बाध्य दृश्यों और कार्यों की स्क्रिप्ट।
  3. शब्द "WITH SCHEMABINDING . हटाएं "स्क्रिप्ट से।
  4. स्क्रिप्ट को कुछ बार चलाएं, जब तक कि सभी संदर्भ त्रुटियों का समाधान न हो जाए।
  5. अपने डेटाबेस पर संयोजन बदलें।
  6. स्क्रिप्ट और सभी बाधाओं (कुंजी, चेक और डिफ़ॉल्ट) को छोड़ दें।
  7. नीचे दी गई स्क्रिप्ट का उपयोग करके प्रत्येक कॉलम का मिलान बदलें।
  8. बाधाओं को फिर से बनाएं।
  9. आखिरकार, स्कीमा-बाइंडिंग को सक्षम करने के लिए मूल स्क्रिप्ट को कुछ बार चलाएं।

आप इस स्क्रिप्ट के साथ सभी स्तंभों का मिलान बदल सकते हैं:

DECLARE @collation nvarchar(128)
DECLARE @commands table ([SQL] nvarchar(max))
DECLARE @cursor cursor
DECLARE @sql nvarchar(max)

SET @collation = 'SQL_Latin1_General_CP1_CI_AS'

INSERT @commands ([SQL])
SELECT 'ALTER TABLE ' + QUOTENAME(c.TABLE_SCHEMA) +'.'+ QUOTENAME(c.TABLE_NAME)
    + ' ALTER COLUMN ' + QUOTENAME(c.COLUMN_NAME)
    + ' ' + c.DATA_TYPE
    + ISNULL('(' + LTRIM(STR(c.CHARACTER_MAXIMUM_LENGTH)) + ')', '')
    + ISNULL(' COLLATE ' + @collation, '')
    + ' ' + CASE c.IS_NULLABLE WHEN 'NO' THEN 'NOT ' ELSE '' END + 'NULL'
FROM INFORMATION_SCHEMA.COLUMNS c
INNER JOIN INFORMATION_SCHEMA.TABLES t
ON t.TABLE_SCHEMA = c.TABLE_SCHEMA AND t.TABLE_NAME = c.TABLE_NAME
WHERE t.TABLE_TYPE = 'BASE TABLE'
AND c.COLLATION_NAME <> @collation

SET @cursor = CURSOR FOR SELECT [SQL] FROM @commands
OPEN @cursor
FETCH NEXT FROM @cursor INTO @sql

WHILE @@FETCH_STATUS = 0
BEGIN 
    PRINT @sql
    EXEC (@sql)

    FETCH NEXT FROM @cursor INTO @sql
END


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2008 खाली स्ट्रिंग बनाम स्पेस

  2. एसक्यूएल सर्वर ऑलवेजऑन (उपलब्धता समूह) आर्किटेक्चर और स्टेप बाय स्टेप इंस्टालेशन -2

  3. SQLServer - मेरी टेबल पर निर्भर टेबल कैसे खोजें?

  4. SQL सर्वर में LEFT ANTI SEMI JOIN कैसे करें?

  5. SQL सर्वर के कौन से संस्करण LINQ से SQL समर्थन करते हैं?