जैसे टूल का उपयोग करके इसे उत्पादन में तैनात करें यदि आप कोई उपकरण नहीं खरीदना चाहते हैं (जो कि उनकी कीमत पूरी तरह से मूल्यवान हैं, बीटीडब्ल्यू), तो आप हमेशा सिस्टम कैटलॉग दृश्यों से पूछताछ कर सकते हैं, और स्क्रिप्ट बनाने के लिए वहां से जानकारी निकालें जो आप अपने नए डेटाबेस पर निष्पादित कर सकते हैं।
उदाहरण के मामले में डिफ़ॉल्ट की कमी, इस क्वेरी आप अपने डेटाबेस में सभी डिफ़ॉल्ट की कमी की एक सूची दिखाता:
SELECT
dc.name 'Constraint Name',
OBJECT_NAME(parent_object_id) 'Table Name',
c.name 'Column Name',
definition
FROM
sys.default_constraints dc
INNER JOIN
sys.columns c ON dc.parent_object_id = c.object_id
AND dc.parent_column_id = c.column_id
ORDER BY
OBJECT_NAME(parent_object_id), c.name
और उस आधार पर, आप निश्चित रूप से एक प्रश्न जो टी SQL कथन फेंकना उन डिफ़ॉल्ट की कमी से बनाना होगा बना सकते हैं अपने लक्ष्य सर्वर पर:
SELECT
'ALTER TABLE ' + OBJECT_SCHEMA_NAME(dc.parent_object_id) + '.' + OBJECT_NAME(dc.parent_object_id) +
' ADD CONSTRAINT ' + dc.name + ' DEFAULT(' + definition
+ ') FOR ' + c.name
FROM
sys.default_constraints dc
INNER JOIN
sys.columns c ON dc.parent_object_id = c.object_id
AND dc.parent_column_id = c.column_id
आप (AdventureWorks
नमूना DB के लिए) कुछ इस तरह मिल चाहते हैं:
ALTER TABLE dbo.Store ADD CONSTRAINT DF_Store_rowguid DEFAULT((newid())) FOR rowguid
ALTER TABLE dbo.Store ADD CONSTRAINT DF_Store_ModifiedDate DEFAULT((getdate())) FOR ModifiedDate
ALTER TABLE dbo.ProductPhoto ADD CONSTRAINT DF_ProductPhoto_ModifiedDate DEFAULT((getdate())) FOR ModifiedDate
ALTER TABLE dbo.ProductProductPhoto ADD CONSTRAINT DF_ProductProductPhoto_Primary DEFAULT(((0))) FOR Primary
ALTER TABLE dbo.ProductProductPhoto ADD CONSTRAINT DF_ProductProductPhoto_ModifiedDate DEFAULT((getdate())) FOR ModifiedDate
ALTER TABLE dbo.StoreContact ADD CONSTRAINT DF_StoreContact_rowguid DEFAULT((newid())) FOR rowguid
ALTER TABLE dbo.StoreContact ADD CONSTRAINT DF_StoreContact_ModifiedDate DEFAULT((getdate())) FOR ModifiedDate
ALTER TABLE dbo.Address ADD CONSTRAINT DF_Address_rowguid DEFAULT((newid())) FOR rowguid
बेशक
, आप टी सकता है परिणामस्वरूप टी-एसक्यूएल आपकी पसंद के आउटपुट के रूप में कमजोर हो रहा है - लेकिन मूल रूप से, & उन परिणामों को क्वेरी से अपने नए डेटाबेस में पेस्ट करें, और आप बाहर जाएं।
बेशक, विदेशी कुंजी संबंधों (sys.foreign_keys) के लिए समान सिस्टम कैटलॉग दृश्य हैं, बाधाओं की जांच करें (sys.check_constraints), अनुक्रमणिका (sys.indexes और sys.index_columns) और कई अन्य।
यह थोड़ा सा काम है - लेकिन यह आपके समय पर किया जा सकता है, और आप प्रक्रिया में SQL सर्वर के बारे में बहुत कुछ सीखेंगे।
तो यह एक पारंपरिक निर्णय को फिर से "बनाने या खरीदने" :-)
मार्क
मैंने 10 वर्षों तक डीबीजीहोस्ट का उपयोग किया है और यह मुझे कभी भी नीचे जाने नहीं देता है, मैं बिना मध्यम पैमाने पर एसक्यूएल विकास का प्रयास नहीं करता। – penderi
एक और विकल्प जिसे मैंने लंबे समय तक उपयोग किया है वह AdeptSQL डिफ है। मुफ़्त नहीं है लेकिन यह स्कीमा और डेटा तुलना करता है, बहुत तेज़ है, और अद्यतन स्क्रिप्ट उत्पन्न कर सकता है और उसे एप्लिकेशन के भीतर से चला सकता है। हालांकि संस्करण नियंत्रण के तहत अपनी स्क्रिप्ट प्राप्त करना भी महत्वपूर्ण है। – DarinH