1

所以我的任务是研究我以前从未做过的事情。

在 VS2010 中使用 C# 构建的 3 个应用程序模块正在使用 1 个数据库 (Database1) 和dbo.Samples等表,这些都具有模式“ dbo.Table ”。出于某种更高的未知原因,已要求将 Database1 下的所有这些表移动到具有更多模式的 Database2 中,例如 padmin.PSTIF、petro.Facilities、webdc.AppTransactions 等。

在这 3 个模块中,所有连接字符串都是通过app.config文件配置的,所有用于显示的数据事务/选择都是通过使用连接字符串的硬编码 SQL 语句完成的。

我担心的是,如果我将dbo.Samples从 Database1 移到 Database2 中,并将架构更改为moss.Samples之类的东西,那么这些硬编码语句中的每一个是否也需要更新?目前我可以编写类似“SELECT * FROM Samples”的代码。我是否必须更改此语句,因为它将使用新模式,即使我将连接字符串更新为 Database2?

编辑:

我在 DB2 的测试环境版本中添加了一些 DB1 的虚拟副本表,并在应用程序中进行了实验。将连接字符串更改为现在指向 DB2 后,我发现我必须检查每个硬编码 SQL 语句并更改表的每次使用以包含新模式(更改FROM SampleFROM 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,这是有道理的,只是觉得值得一试。

4

2 回答 2

1

嗨,分析疯子,

您可能还需要在数据库方面采取一些额外的步骤。仅仅复制一个数据库并不会复制它的所有附加信息。触发器、约束、索引和权限不会自动复制到新数据库中。使用复制向导可能会更好。

于 2013-09-26T19:51:31.043 回答
0

您的问题中有很多隐含的问题,潜在的问题和未知数……只是几点:

1) 是的,您可以通过许多不同的方式轻松地将数据从一个表移动到另一个表,或者两个完全不同的数据库。包括SSIS"select into"

2)不,您很少想在生产代码中执行“select *”。

3)是的,访问一个表中的一列的任何硬编码语句可能必须修改以访问不同表中的不同列:)

于 2013-09-26T19:35:08.950 回答