相关疑难解决方法(0)

如何将数据库从 SQL Server 2012 移动到 SQL Server 2005

如果我需要将数据库从 SQL Server 2012(32 位)移动到 SQL Server 2005(64 位),我有哪些选择?

我知道我不能:

  • 在 SQL Server 2005 上还原数据库的备份
  • 分离和附加

我知道我可以:

  • 使用导入数据向导,我在一个数据库上尝试过,但它只移动数据,即使那样也很麻烦,因为我需要做很多工作来创建临时表来维护标识列,重新创建所有 FK、索引等。

有没有更简单的选择?

sql-server migration downgrade

34
推荐指数
2
解决办法
2万
查看次数

ETL:从 200 个表中提取 - SSIS 数据流或自定义 T-SQL?

根据我的分析,我们数据仓库的完整维度模型需要从 200 多个源表中提取。其中一些表将作为增量加载的一部分提取,而其他表将作为完整加载。

需要注意的是,我们有大约 225 个具有相同架构的源数据库。

据我所知,在 SSIS 中构建一个带有 OLE DB 源和 OLE DB 目标的简单数据流需要在设计时确定列和数据类型。这意味着我最终会得到 200 多个数据流,仅用于提取。

从可维护性的角度来看,这对我来说是一个大问题。如果我需要对提取代码进行某种彻底的更改,我将不得不修改 200 个不同的数据流。

另一种选择是,我编写了一个小脚本,用于读取我想从一组元数据表中提取的源数据库、表名和列。代码在多个循环中运行,并使用动态 SQL 通过链接服务器和 OPENQUERY 从源表中提取。

根据我的测试,这仍然不如使用带有 OLEDB 源和目标的 SSIS 数据流快。所以我想知道我有什么样的选择。到目前为止的想法包括:

  1. 使用EZAPI以编程方式生成具有简单数据流的 SSIS 包。要提取的表和列将来自前面提到的相同元数据表。
  2. 购买第 3 方软件(动态数据流组件)

解决这个问题的最佳方法是什么?当谈到 .NET 编程时,我是一个初学者,所以仅仅学习基础知识所需的时间也是一个问题。

sql-server-2005 data-warehouse sql-server etl ssis

13
推荐指数
1
解决办法
1万
查看次数

用另一个表中的数据覆盖表 - SQL

我们的用户想要从生产中刷新 QA 数据库,但想要两个表(我们称它们为 T1 和 T2)来保留原始 QA 数据。因此,我将两个表从 QA (DB1) 复制到临时 QA 数据库 (DB2)。然后从生产中刷新 DB1。刷新后,我想将 T1 和 T2 数据从 DB2 覆盖到 DB1,以便它可以包含预刷新 QA 值。

我做了以下工作:

  1. select * 
    INTO D1.dbo.T1
    FROM D2.dbo.T1
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后从 prod 刷新 D1

  3. 然后使用以下步骤截断 T1:

    SELECT COUNT(*) AS BeforeTruncateCount
    FROM T1;
    GO
    TRUNCATE TABLE T1;
    GO
    SELECT COUNT(*) AS AfterTruncateCount
    FROM T1;
    GO
    
    Run Code Online (Sandbox Code Playgroud)
  4. 现在,当我返回将数据从 D2.T1 复制到 D1.T1 时,我收到错误消息,即数据库中已存在名为 T1 的对象。

我应该放下桌子并复制吗?

或者整个过程有没有更好的方法?

sql-server

10
推荐指数
3
解决办法
7万
查看次数

尝试使用 SMO 传输对象将数据库从一个实例传输到另一个实例

架构表归 dbo 和另一个架构名称所有。下面的代码没有在任何表格上移动。我还需要添加其他东西才能传输表格吗?没有需要移动的存储过程或视图。

$xfr1 = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Transfer($prodServerDB.Databases[$devDatabase])

#Set this objects properties
$xfr1.DestinationLoginSecure           = $false
$xfr1.DestinationServer                = $devServer
$xfr1.DestinationLogin                 = $devUsername
$xfr1.DestinationPassword              = $devPassword
$xfr1.DestinationDatabase              = $devDatabase
$xfr1.BatchSize                        = 10485760
$xfr1.CopyData                         = $true
$xfr1.CopyAllTables                    = $true
$xfr1.CopyAllObjects                   = $true
$xfr1.CopyAllDatabaseTriggers          = $true
$xfr1.CopyAllLogins                    = $false
$xfr1.CopyAllRoles                     = $false
$xfr1.CopyAllUsers                     = $false
$xfr1.CopySchema                       = $true
$xfr1.PreserveDbo                      = $true
$xfr1.PreserveLogins                   = $true

$xfr1.Options.AllowSystemObjects       = $false
$xfr1.Options.ContinueScriptingOnError = $true
$xfr1.Options.Indexes                  = $true
$xfr1.Options.IncludeIfNotExists       = $true
$xfr1.Options.DriAll                   = $true
$xfr1.Options.SchemaQualify            = $true
$xfr1.Options.ScriptSchema             = …
Run Code Online (Sandbox Code Playgroud)

sql-server powershell sql-server-2012 smo amazon-rds

1
推荐指数
1
解决办法
3827
查看次数