SQL सर्वर का नामकरण किसी अन्य डेटाबेस से तालिका


10

क्या किसी अन्य डेटाबेस में एक तालिका का नाम बदलने के लिए SQL सर्वर में एक तरीका है? जब आप वर्तमान डेटाबेस में हैं और TEMP तालिका में किसी अन्य डेटाबेस पर डेटा स्थानांतरित कर रहे हैं और फिर उस अन्य डेटाबेस में TEMP तालिका का नाम बदल रहे हैं। मैं "USE [डेटाबेस]" का उपयोग नहीं करना चाहता क्योंकि डेटाबेस का नाम विभिन्न सर्वरों पर बदल सकता है।

अग्रिम में मदद के लिए धन्यवाद!

जवाबों:


6

आपको ऐसा करने के लिए गतिशील sql का उपयोग करना चाहिए। एक स्ट्रिंग बनाएँ और इसे निष्पादित करें। जब तक आप गंतव्य डेटाबेस का नाम जानते हैं, तब तक सब कुछ ठीक होना चाहिए।

use CurrentDB
declare @x varchar(1000), @otherDb sysname = 'NewDB';

set @x = 'use ' + @otherDB + '

EXEC sp_rename ''dbo.temp'', ''temp2''
'
exec (@x);
print @x;
GO

3

यह निश्चित रूप से संभव है, लेकिन जब संभव हो तो गतिशील एसक्यूएल से बचा जाना चाहिए । यह आसानी से सुरक्षा और प्रदर्शन की समस्याओं की ओर जाता है।

अपने प्रश्न के बारे में थोड़ा सोचने के बाद क्या आपको यकीन है कि यह सही नाम के साथ दूसरी तालिका बनाने के लिए और अधिक समझ में नहीं आएगा और फिर TEMP तालिका से बस इसमें प्रवेश करें? मुझे लगता है कि TEMP तालिका वास्तव में एक स्थानीय / वैश्विक अस्थायी तालिका या तालिका चर है।


3

गतिशील एसक्यूएल का उपयोग करना

  USE MyDB1
  GO

  DECLARE @db_name   NVARCHAR(20)   = 'myDB2'
  DECLARE @sql       NVARCHAR(1000)

  SET @sql = N'EXEC '+ quotename(@db_name)+ '..sp_rename ''[MyTable]'', ''[YourTable]'';';

  PRINT @sql;
  EXEC SP_EXECUTESQL @sql;

या EXEC में डेटाबेस को निर्दिष्ट करके:

USE MyDB1
GO

EXEC MyDB2..sp_rename 'MyTable', 'YourTable'

जैसा कि http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx में बताया गया है


1
MyDB2..sp_renameअब तक सबसे सरल है!
मिशेल डे रुएटर

0

आप SSMS का उपयोग भी कर सकते हैं। SSMS का उपयोग करने का लाभ यह है कि यह आपके संदर्भों और बाधाओं से गुजरेगा और उन लोगों का भी नाम बदलेगा। बस SSMS में ऑब्जेक्ट ब्राउज़र खोलें ब्याज की तालिका ढूंढें और उसका नाम बदलें। यदि आपके पास अन्य तालिकाओं में विदेशी कुंजी बाधाएं हैं जो तालिका का नाम बदलने का उल्लेख करते हैं तो यह तालिका को नए तालिका नाम में उन प्रमुख परिभाषाओं में भी बदल देगा।

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