所以我一直負責研究以前從未做過的事情。使用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=DatabaseName
到Initial Catalog=DatabaseName.moss
,但應用程序返回它找不到數據庫DatabaseName.moss
,這是有道理的,只是想通這是值得一試。
相關 - 請仔細閱讀以瞭解爲什麼您不應該使用'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 –
感謝文章亞倫,但只是爲了澄清我用'SELECT * FROM Samples'作爲例子。我的真實陳述只返回必要的專欄。 –
架構前綴文章仍然適用:不要試圖找到一些黑客,所以你可以懶惰不指定架構。這比一次性遷移的簡易性更重要。 –