2013-09-26 15 views
1

所以我一直負責研究以前從未做過的事情。使用C#中VS2010內置使用新架構將所有數據庫表移動到另一個數據庫下?

3個應用模塊使用1個數據庫(數據庫1)與表如dbo.Samples,它們都具有模式「DBO。」。對於一些更高級的未知原因,已經要求將Database1下的所有這些表移入Database2,其具有更多模式,例如padmin.PSTIF,petro.Facilities,webdc.AppTransactions等。

在這3個模塊所有連接字符串均通過app.config文件進行配置,並且所有用於顯示的數據事務/選擇均通過使用連接字符串的硬編碼SQL語句完成。

我擔心的是,如果我將dbo.Samples從數據庫1,進入用的Database2模式更改爲moss.Samples,將各自的硬編碼的報表需要更新,以及這樣的東西?目前,我可以編寫像「SELECT * FROM Samples」這樣的代碼。我是否必須更改此語句,因爲它將使用新的模式,即使我將連接字符串更新爲Database2?

編輯:

我加DB1的一些虛擬拷貝表格到DB2的測試環境版本和應用實驗。將連接字符串更改爲現在指向DB2後,我發現必須通過每個硬編碼的SQL語句並更改每個表的使用以包含新的模式(將FROM Sample更改爲FROM moss.Sample)。

有誰知道是否可以指定我希望在連接字符串本身中使用的模式?如果可能的話,這將使我無法在3個應用程序中更改大約200個單獨的語句

我的例子連接字符串是以下:

<connectionStrings> 
    <add name="conString" connectionString="Data Source=SERVER.domain.state.acroynym.us;Initial Catalog=DatabaseName;Integrated Security=true;" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

我試圖改變Initial Catalog=DatabaseNameInitial Catalog=DatabaseName.moss,但應用程序返回它找不到數據庫DatabaseName.moss,這是有道理的,只是想通這是值得一試。

+0

相關 - 請仔細閱讀以瞭解爲什麼您不應該使用'SELECT * FROM Samples':http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/10/bad-habits-to-kick- using-select-omitting-the-column-list.aspx http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/11/bad-habits-to-kick-avoiding-the-schema-prefix.aspx –

+0

感謝文章亞倫,但只是爲了澄清我用'SELECT * FROM Samples'作爲例子。我的真實陳述只返回必要的專欄。 –

+1

架構前綴文章仍然適用:不要試圖找到一些黑客,所以你可以懶惰不指定架構。這比一次性遷移的簡易性更重要。 –

回答

0

有這麼多的隱性問題,潛在問題和未知在你的問題......就在幾個點:

1)是的,你可以輕鬆地將數據從一個表到另一個,或兩個完全不同的數據庫,以許多不同的方式。包括SSIS"select into"

2)不,你很少想在生產代碼中做「select *」。

3)是的,任何硬編碼的語句訪問一個表中的一列可能會被修改在不同的表:)

+0

爲了澄清,我使用'SELECT * FROM Samples'作爲示例。我的真實陳述只返回必要的專欄。因此,在第3點,如果我將所有內容都移動到DB2中,而不是說'FROM Samples',並且應用程序隱式知道我的意思是來自連接字符串中的DB1的'dbo.Samples',那麼我將不得不做'FROM moss.Samples'連接字符串新指向DB2?在DB1中,所有模式都是'dbo',而在新的DB2中,已經列出了幾種不同的模式。 –

+0

啊,所以你的問題是關於「完全合格的名字」。建議:1)不要太掛上「連接字符串」:還有很多其他問題/備選方案需要考慮,2)查看一些鏈接:[完全限定表名和同義詞](http:// ask.sqlservercentral.com/questions/20337/fully-qualified-table-name.html),[SQL Server Set Default Schema](http://stackoverflow.com/questions/4942023/set-default-schema-for-a -sql-query)或http://stackoverflow.com/questions/4273242/hundreds-of-aliases-synonyms-vs-database-tables-fully-qualified-names。 '希望有所幫助... – paulsm4

+0

感謝您的文章。我已經編輯了我的帖子,現在我正站在這個問題上。 –

1

喜分析瘋子訪問不同的列,

有可能還需要在數據庫端執行一些其他步驟。僅僅複製數據庫不會複製其所有附加信息。觸發器,約束,索引和權限不會自動複製到新數據庫中。使用複製嚮導可能會更好。

+0

哦,我確定有!我從來沒有做過數據庫遷移。我只是被要求研究這個問題,因爲我們團隊中剩餘的DB1應用程序是唯一剩下的原始開發人員。 –

相關問題