介绍 (Introduction)

The main goal of many organizations, today, is reducing costs while maintaining the highest degree of stability and efficiency. To this end, we should think out of the box about how we can help to achieve this as DBAs. The approaches include:

今天,许多组织的主要目标是降低成本,同时保持最高的稳定性和效率。 为此,我们应该以开箱即用的方式考虑如何才能帮助实现DBA的目标 这些方法包括:

  • Centralization 集权
  • Curtailment the SAN storage 减少SAN存储
  • Reducing the Microsoft license for Windows and SQL Server 减少Windows和SQL Server的Microsoft许可证

Database Migration is a possible solution to achieve this goal. However, some DBA’s do not have a clear view of the requirements, and the actual steps for how to accomplish this with minimum risks and zero downtime.

数据库迁移是实现此目标的可能解决方案。 但是,某些DBA对要求没有清晰的了解,而对于如何以最小的风险和零停机时间实现这一目标的实际步骤也不清楚。

In this article, I will list commons steps for database migration, including the following:

在本文中,我将列出数据库迁移的常用步骤,包括以下内容:

  • Migration Requirements 迁移要求
  • Reporting Services (SSRS) Migration 报告服务(SSRS)迁移
  • Databases Engine Migration Preparation 数据库引擎迁移准备
  • Database Engine Migration Process 数据库引擎迁移过程
  • Migration recommendation 迁移建议
  • Conclusion 结论
  • References 参考资料

迁移要求 (Migration requirements )

In this phase, we should have good knowledge about Microsoft SQL Server services and how we can manage it to be able to collect the below information:

在此阶段,我们应该对Microsoft SQL Server服务以及如何对其进行管理以收集以下信息有很好的了解:

  • How many SQL Server instances? If we are going for migration project, we should list all the instance included in this process to prepare our scripts and to open the shared folder Port 445 to be able to take backup and restore on this shared folder.

    有多少个SQL Server实例? 如果要进行迁移项目,则应列出此过程中包含的所有实例以准备脚本并打开共享文件夹端口445,以便能够在此共享文件夹上进行备份和还原。

  • How many Databases need to be migrated? This is very important information to be able to know how we will distribute the databases between the new instances that we will migrate to.

    需要迁移多少个数据库? 这是非常重要的信息,能够知道我们将如何在将要迁移到的新实例之间分配数据库。

  • Databases size? This information is required to be able to design the disk chart diagram required for this databases

    数据库大小? 需要此信息才能设计此数据库所需的磁盘图表

报告服务(SSRS)迁移 (Reporting Services (SSRS) Migration)

For moving reporting RDL from server to another server, we have two options:

要将报告RDL从一台服务器移动到另一台服务器,我们有两个选择:

  1. Backup/Restore the two databases {ReportServer, ReportServerTemp} from the old reporting service instance to the new one

    将两个数据库{ ReportServer,ReportServerTemp }从旧的报表服务实例备份/恢复到新数据库

  2. Moving the RDL files and data source using third party tools like RS ScripterThis tool can grab all the RDL and data source from the destination and deploy it to the new report server. For more information about this tool check this link

    使用RS Scripter等第三方工具移动RDL文件和数据源此工具可以从目标位置获取所有RDL和数据源,并将其部署到新的报表服务器。 有关此工具的更多信息,请单击此链接

More information can be found on this article – Moving the Report Server Databases to Another Computer (SSRS Native Mode)

可以在本文中找到更多信息–将报表服务器数据库移动到另一台计算机(SSRS纯模式)

数据库迁移 (Database Migration )

In this stage, will list all the steps one by one, that it will lead us to the optimal migration with no downtime, and without missing anything. These steps are divided into two phases, Preparation and Migration which will be covered next:

在此阶段,将一步一步列出所有步骤,它将使我们在不停机的情况下实现最佳迁移,并且不会丢失任何内容。 这些步骤分为两个阶段,准备和迁移,接下来将介绍这些阶段:

数据库引擎迁移准备 (Databases Engine Migration Preparation)

  • Application Server: The Development team should be ready to change the connection string to the new SQL Server instance name. However, sometimes they will not be able to do this, and in such case we need to us routing alias to direct any connection attempts from the application server to the Old SQL Server.

    应用程序服务器:开发团队应准备将连接字符串更改为新SQL Server实例名称。 但是,有时他们将无法执行此操作,在这种情况下,我们需要使用路由别名将任何连接尝试从应用程序服务器定向到旧SQL Server。

    Then the alias will direct it to our new SQL Server

    然后,别名会将其定向到我们的新SQL Server

    To do this action:

    要执行此操作:

    • Open RUN 打开运行
    • Write Cliconfg 写Cliconfg
    • Figure 2 Adding Alias 图2添加别名

  • Server configuration: script all the current server configuration like [CPU, IO, Memory, the threshold of parallelism, Max degree of parallelism, CLR]

    服务器配置 :编写所有当前服务器配置的脚本,例如[CPU,IO,内存,并行度阈值,最大并行度,CLR]

  • RCSI (Read Committed Snapshot Isolation): List all databases with RCSI option enable, this configuration saved in MSDB and when you move the DB by backup/restore this kind of configuration you will lose it.

    RCSI(读取提交的快照隔离):列出所有启用了RCSI选项的数据库,此配置保存在MSDB中,当您通过备份/还原移动数据库时,这种配置将丢失。

    
    Select name,
    '
    EXEC sp_resetstatus ''' + name + '''
    GO
    ALTER DATABASE ' + name + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    go
    ALTER DATABASE ' + name + ' SET READ_COMMITTED_SNAPSHOT ON;
    go
    ALTER DATABASE ' + name + ' SET MULTI_USER WITH ROLLBACK IMMEDIATE
    go
    '
    as 'Run on Destination Server.'
    from sys.databases
    where is_read_committed_snapshot_on = 1
    and database_id>4 and name <>'distribution'
  • Service Broker: figure out the databases with the service broker option enabled

    Service Broker :找出启用了Service Broker选项的数据库

    
    Select name,'
    USE master ;
    GO
    ALTER DATABASE [' + name + '] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
    GO
    ALTER DATABASE ' + name + ' SET ENABLE_BROKER ;
    GO
    ALTER DATABASE [' + name + '] SET  MULTI_USER WITH ROLLBACK IMMEDIATE
    GO'
    from sys.databases where is_broker_enabled = 1
    and database_id>4 and name <>'distribution'
  • Non-Contained Object Migration: here we need to migrate the following: Linked Servers, Users, Privileges Alerts, Operator, Mail configuration, Bussniues jobs and System DB user objects

    非包含对象迁移 :在这里,我们需要迁移以下内容:链接服务器,用户,特权警报,操作员,邮件配置,Bussniues作业和System DB用户对象

    To cover all of the above, I am using a very helpful PowerShell script from DBATools which covers many cases.

    为了涵盖以上所有内容,我使用了DBATools提供的非常有用的PowerShell脚本,该脚本涵盖了许多情况。

    For more information about this PowerShell script check it here DBATools; some samples from the PowerShell command:

    有关此PowerShell脚本的更多信息,请在这里DBATools中进行检查 PowerShell命令中的一些示例:

    • Server name”-Destination “服务器名称 ”-目标“ Server name”-Force 服务器名称 ”-强制
    • Server name”-Destination “服务器名称 ”-目标“ Server name服务器名称
    • Server name”-Destination “服务器名称 ”-目标“ Server name”-Force 服务器名称 ”-强制
    • Server name”-Destination “服务器名称 ”-目标“ Server name”-Force 服务器名称 ”-强制
    • Server name”-Destination “服务器名称 ”-目标“ Server name”-Force 服务器名称 ”-强制
    • Server name”-Destination “服务器名称 ”-目标“ Server name” -Force 服务器名称 ”-强制
    • Server name”-Destination “服务器名称 ”-目标“ Server name”–Force 服务器名称 ”-强制
    • Server name”-Destination “服务器名称 ”-目标“ Server name.” 服务器名称”
  • SYNONYMS: it is like linked server we need to list it then change the connection string with new server SYNONYMS :就像链接服务器一样,我们需要列出它,然后更改与新服务器的连接字符串

    
    Declare @DBname Nvarchar(500)=(Select DB_NAME())
    Select @DBname
    Select   '
    Use ['+@DBname+']
    GO
    Create SYNONYM dbo.[' + Name + '] For ' + Base_Object_name   FROM SYS.SYNONYMS

数据库引擎迁移过程 (Database engine migration process)

These previous four points are pre-preparation for the migration process, and now let’s start the actual migration.

前面的四点是迁移过程的准备工作,现在让我们开始实际的迁移。

  • Full Backup from the source server: Backup is the most important step that the entire migration processes depend on it. Thus, I am using one of my customized stored procedures: (DMV_backup_Database), it is very sophisticated stored procedure to drive all of the SQL backups types (FULL, DIFF, LOG) with using the backup device, dynamic technology parameters, Table type for eliminating long some databases from the backup. This stored procedure will require creating two shared folders on the destination server, to be able to take the backup direct from the source to the destination SAN disks.

    从源服务器进行完全备份:备份是整个迁移过程所依赖的最重要的步骤。 因此,我使用的是我的自定义存储过程之一:( DMV_backup_Database ),它是一种非常复杂的存储过程,它通过使用备份设备,动态技术参数,表类型来驱动所有SQL备份类型( FULL,DIFF,LOG )从备份中消除了一些数据库。 此存储过程将需要在目标服务器上创建两个共享文件夹,以便能够将备份直接从源磁盘复制到目标SAN磁盘。

    For more information about this stored procedure including parameters and script see Appendix A.

    有关此存储过程的更多信息,包括参数和脚本,请参阅附录A。

    
    USE [msdb]
    GOCREATE TYPE [dbo].[Exceptionlist] AS TABLE([list] [int] NULL
    )
    GOUSE [msdb]
    GO
    DECLARE @return_value int
    declare @Exceptionlist_value Exceptionlist
    insert into  @Exceptionlist_value
    Select 2 UNION SELECT 6 UNION SELECT 9--- DB's ID Excluded from backup process
    EXEC    @return_value = [dbo].[DMV_BackupAll]@start_DB_ID = 5,@END_DB_ID = 200,@FULLTapeBackupLocation = N'\\DestinationServer\Backup\FULL\',@FULLBackup = 1,@FULLoverwrite =1 ,@DIFFTapeBackupLocation = N'\\DestinationServer\Backup\DIFF\',@DiffBackup= 0 ,@DIFFoverwrite = 0,@LOGBackupLocation = N'\\DestinationServer\Backup\LOG\',@LOGBackup = 0,@LOGoverwrite = 0,@COMPRESSION = 1,@Exceptionlist_DBs = @Exceptionlist_value,@job_name='DMV_UserDB_Full_Backup',@p_recipients = 'SQLGULF-DBConsultant@MostafaElmasry.com'SELECT 'Return Value' = @return_value 
  • Create Backup Device for a Full backup: script all the backup devices created in the source after the backup successfully processes and create them on the destination server to be able to do the restore using this backup device.

    创建完整备份的备份设备脚本在备份成功处理后在源中创建的所有备份设备编写脚本,并在目标服务器上创建它们,以便能够使用此备份设备进行还原。

    
    USE [master]
    GO
    Select 'USE [master]
    GO
    EXEC master.dbo.sp_addumpdevice  @devtype = N''disk'',
    @logicalname = N'''+name+'_FULLtape'', @physicalname =
    N''\\DestinationServer\Backup\FULL\'+name+'_FULLtape.back''
    GO
    ' from Sys.Databases where state_desc ='online' AND Database_id > 4 
  • Restore Full Backup on destination server: The second step is restoring the entire FULL backup on the new server with No recovery option. For making the databases in the restore mode to be able to restore the Differential backup overwrite it.

    在目标服务器上还原完全备份:第二步是在没有恢复选项的新服务器上还原整个FULL备份。 为了使数据库在还原模式下能够还原差异备份,请将其覆盖。

  • DB in Read-only status: in the source server, we need to update the status of all of the databases to be in a Read-Only status, to make sure there is no change will occur on the DB level. The following script will generate a T-SQL script for altering each database to be in a Read-only mode.

    DB处于只读状态:在源服务器中,我们需要将所有数据库的状态更新为只读状态,以确保在DB级别上不会发生任何更改。 以下脚本将生成一个T-SQL脚本,用于将每个数据库更改为只读模式。

    
    select 'EXEC sp_resetstatus '''+NAME+'''
    GO
    ALTER DATABASE ['+NAME+'] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    GO
    ALTER DATABASE ['+NAME+'] SET  READ_ONLY WITH ROLLBACK IMMEDIATE
    GO
    ALTER DATABASE ['+NAME+'] SET MULTI_USER
    '
    from sys.databases where database_id>4 and name <>'distribution'
    and state_desc = 'online'
  • Differential Backup from the source server: Now the DB’s are in Read only mode so taking a differential backup will cover all the changes happened on the database from the last full backup. Here, also, we will use the same stored procedure “DMV_backup_Database” we used it in the full backup before.

    来自源服务器的差异备份:现在,数据库处于只读模式,因此进行差异备份将覆盖自上次完整备份以来数据库中发生的所有更改。 同样,在这里,我们将使用之前在完整备份中使用的存储过程“ DMV_backup_Database ”。

    
    USE [msdb]
    GO
    DECLARE @return_value int
    declare @Exceptionlist_value Exceptionlist
    insert into  @Exceptionlist_value
    Select 2 UNION SELECT 6 UNION SELECT 9--- DB's ID Excluded from backup process
    EXEC    @return_value = [dbo].[DMV_BackupAll]@start_DB_ID = 5,@END_DB_ID = 200,@FULLTapeBackupLocation = N'\\DestinationServer\Backup\FULL\',@FULLBackup = 0,@FULLoverwrite =0 ,@DIFFTapeBackupLocation = N'\\DestinationServer\Backup\DIFF\',@DiffBackup= 1 ,@DIFFoverwrite = 1,@LOGBackupLocation = N'\\DestinationServer\Backup\LOG\',@LOGBackup = 0,@LOGoverwrite = 0,@COMPRESSION = 1, @Exceptionlist_DBs = @Exceptionlist_value,@job_name='DMV_UserDB_DIFF_Backup',@p_recipients = 'SQLGULF-DBConsultant@MostafaElmasry.com'
  • Create Backup Device for DIFF backup: Script the backup devices related to the DIFF backup from the source server and create it on the destination server.

    创建用于DIFF备份的备份设备:使用脚本编写与源服务器上的DIFF备份相关的备份设备,并在目标服务器上创建备份设备。

    
    USE [master]
    GO
    Select 'USE [master]
    GO
    EXEC master.dbo.sp_addumpdevice  @devtype = N''disk'',
    @logicalname = N'''+name+'_DIFFtape'', @physicalname =
    N''\\DestinationServer\Backup\FULL\'+name+'_DIFFtape.back''
    GO
    ' from Sys.Databases where state_desc ='online' AND Database_id > 4
  • Restore the Differential Backup on destination server: Restore the differential backup with Recover option and overwrite.

    在目标服务器上还原差异备份:使用“恢复”选项还原差异备份并覆盖。

  • Change DB’s status to Read-Write status: When we restored the differential backup on the destination server, will find all the databases in read only mode because we take the differential backup from the source after updating the databases by read only mode.

    将数据库的状态更改为读写状态 :当我们在目标服务器上还原差异备份时,将以只读模式查找所有数据库,因为在以只读模式更新数据库后,我们从源中获取了差异备份。

    
    select 'EXEC sp_resetstatus '''+NAME+'''
    GO
    ALTER DATABASE ['+NAME+'] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    GO
    ALTER DATABASE ['+NAME+'] SET  READ_WRITE WITH ROLLBACK IMMEDIATE
    GO
    ALTER DATABASE ['+NAME+'] SET MULTI_USER WITH ROLLBACK IMMEDIATE
    '
    from sys.databases where database_id>4 and name <>'distribution'
    and state_desc = 'online'
  • Migrate Login from source server: Execute the PowerShell command again for moving the SQL Server users to grantee there is no missing user.

    从源服务器迁移登录:再次执行PowerShell命令,以将SQL Server用户移动到没有丢失用户的被授予者。

    • Copy-SqlLogin -Source “Server name”-Destination “Server name”-Force

      Copy-SqlLogin-源“ 服务器名称 ”-目标“ 服务器名称 ” -强制

    • Sync-SqlLoginPermissions -Source “Server name”-Destination “Server name.

      Sync-SqlLoginPermissions-源“ 服务器名称 ”-目标“ 服务器名称。

  • Disable login on the source server: Now all of our databases are moved to the new server. To know if the application is working fine do disable the logins in the old instance.

    在源服务器上禁用登录 :现在我们所有的数据库都移到了新服务器上。 要知道应用程序是否运行正常,请在旧实例中禁用登录。

    
    USE master;
    GO
    SELECT 'ALTER LOGIN ['+name+'] DISABLE;'
    FROM sys.syslogins where
    name not like '%##MS%'
    and name not like '%NT AUTHORITY%'
    and name not like '%NT SERVICE%'
    and name not in
    ('SQLSHACK','SA')
  • Check DB compatibility: If we migrated from old version to new version as Example 2016 we need to update the DB compatibility to be 140

    检查数据库兼容性:如果像例2016那样从旧版本迁移到新版本,则需要将数据库兼容性更新为140

    
    select name,
    '
    EXEC sp_resetstatus ''' + name + '''
    GO
    ALTER DATABASE ' + name + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    go
    USE [master]
    GO
    ALTER DATABASE [' + name + '] SET COMPATIBILITY_LEVEL = 140
    go
    ALTER DATABASE ' + name + ' SET MULTI_USER WITH ROLLBACK IMMEDIATE
    go
    '
    from sys.Databases where Database_Id > 4 AND COMPATIBILITY_LEVEL <> 140 
  • Check Failed login on both servers: failed logins on of the things that we should monitor to know if there is any application still connected to the old SQL Server. Here is the steps for creating Failed login audit in SQL Server

    选中两台服务器上的登录失败:我们应该监视以了解是否仍有任何应用程序仍连接到旧SQL Server的事物上的登录失败。 这是在SQL Server中创建失败的登录审核的步骤

    • Create folder on local SAN storage

      在本地SAN存储上创建文件夹

      
      USE Master;
      GO
      SET NOCOUNT ON
      -- 1 - Variable declaration)
      DECLARE @LogPath nvarchar(500)
      DECLARE @DirTree TABLE (subdirectory nvarchar(255), depth INT)
      SET @LogPath = 'C:\ServerAuditing\' ---------------+ @DBName
      -- 5 - Remove all records from @DirTree
      DELETE FROM @DirTree
      -- 6 - @LogPath values
      INSERT INTO @DirTree(subdirectory, depth)
      EXEC master.sys.xp_dirtree @LogPath
      -- 7 - Create the @LogPath directory
      IF NOT EXISTS (SELECT 1 FROM @DirTree )
      ----------WHERE subdirectory = @DBName)
      EXEC master.dbo.xp_create_subdir @LogPath
      SET NOCOUNT OFF
      GO  
    • Create server audit specifications

      创建服务器审核规范

      
      USE [master]
      GO
      IF  EXISTS (SELECT * FROM sys.server_audits WHERE name = N'FAILED_LOGIN_GROUP')
      ALTER SERVER AUDIT [FAILED_LOGIN_GROUP]
      WITH (STATE = OFF);
      GO
      IF  EXISTS (SELECT * FROM sys.server_audits WHERE name = N'FAILED_LOGIN_GROUP')
      DROP SERVER AUDIT [FAILED_LOGIN_GROUP]
      GO
      USE [master]
      GO
      /****** Object:  Audit [FAILED_LOGIN_GROUP]    Script Date: 10/25/2010 13:21:58 ******/
      CREATE SERVER AUDIT [FAILED_LOGIN_GROUP]
      TO FILE
      (   FILEPATH = N'C:\Server Auditing',MAXSIZE = 100 MB,MAX_ROLLOVER_FILES = 2,RESERVE_DISK_SPACE = OFF
      )
      WITH
      (   QUEUE_DELAY = 1000,ON_FAILURE = CONTINUE,AUDIT_GUID = '8f5c8e0b-6ba3-4964-8da5-d7184220f9ca'
      )
      GO
      ALTER SERVER AUDIT [FAILED_LOGIN_GROUP]
      WITH (STATE = ON);
      GO
      IF  EXISTS (SELECT * FROM sys.server_audit_specifications WHERE name = N'FAILED_LOGIN_GROUP')
      ALTER SERVER AUDIT SPECIFICATION [FAILED_LOGIN_GROUP]
      WITH (STATE = OFF)
      GO
      IF  EXISTS (SELECT * FROM sys.server_audit_specifications WHERE name = N'FAILED_LOGIN_GROUP')
      DROP SERVER AUDIT SPECIFICATION [FAILED_LOGIN_GROUP]
      GO
      GO
      CREATE SERVER AUDIT SPECIFICATION [FAILED_LOGIN_GROUP]
      FOR SERVER AUDIT [FAILED_LOGIN_GROUP]
      ADD (FAILED_LOGIN_GROUP)
      WITH (STATE = ON)
      GO 

迁移建议 (Migration recommendation)

In this juncture, there are some recommended points we should consider; they are the key elements any successful migration project:

目前,我们应该考虑一些建议的要点; 它们是任何成功的迁移项目的关键要素:

  • The master database should be hosted on a separate disk (200 GB, SAS, RAID 5)

    主数据库应托管在单独的磁盘(200 GB,SAS,RAID 5)上

  • TempDB databases should be hosted on a separate disk (150 GB, SSD-, RAID 1/0)

    TempDB数据库应托管在单独的磁盘上(150 GB,SSD-,RAID 1/0)

  • MDF files for the user’s databases should be hosted on a separate disk (SAS, RAID 5)

    用户数据库的MDF文件应托管在单独的磁盘(SAS,RAID 5)上

  • Transaction log (LDF) should host in separate disk (150 GB, SAS, RAID 5)

    事务日志(LDF)应该位于单独的磁盘(150 GB,SAS,RAID 5)中

  • TempDB databases files should be configured based on the logical processors count if the logical processors less than or equal to 8 configure your tempdb with the count of the logcail processors, If it is more than 8 logical processors configure your tempdb on 8 files for more information check microsoft recommendation.

    如果少于或等于8的逻辑处理器用logcail处理器的数量来配置您的tempdb,则应基于逻辑处理器的数量来配置TempDB数据库文件;如果多于8的逻辑处理器,请在8个文件上配置tempdb以获取更多信息。检查Microsoft的建议 。

结论 (Conclusion )

A successful database migration is not mission impossible. But it is important to approach it systematically. One only needs an awareness of what to do and the requirement to successfully carry it out. And, as always, make sure every single step is documented.

成功的数据库迁移并非并非不可能。 但是系统地处理它很重要。 一个人只需要知道做什么和成功实施的要求即可。 并且,一如既往,确保记录每个步骤。

附录A – DMV_BackupAll存储过程 (Appendix A – DMV_BackupAll stored prodecure)

You can download this script here

您可以在此处下载此脚本

翻译自: https://www.sqlshack.com/sql-server-database-migration-best-practices-low-risk-downtime/

SQL Server数据库迁移最佳实践,可降低风险和停机时间相关推荐

  1. 问君能有几多愁,恰似不懂Linux SQL如何调优——聊聊SQL Server on Linux最佳实践

    问君能有几多愁,恰似不懂Linux SQL如何调优--聊聊SQL Server on Linux最佳实践 自从微软开始拥抱Linux, SQL Server 很快就推出了 Linux版本, linux ...

  2. 使用SQL Server事务复制将SQL Server数据库迁移到Azure SQL数据库

    In this guide, we'll discuss more about migrating a SQL Server database to Azure SQL Database using ...

  3. 将本地SQL Server数据库迁移到Azure SQL数据库

    In this article, we will discuss and understand a method to migrate an on-premises SQL Server databa ...

  4. 华为云数据库SQL Server 上云最佳实践

    作者:华为云数据库高级项目经理/沈志鹏 沈志鹏: 在我开讲之前要先强调一下,刚才两个引擎所说的所有优点,SQL Server都有. 开讲前问一句,有没有人用过SQL Server数据库的?很好用的人还 ...

  5. SQL Server数据库迁移–将数据库克隆到另一个排序规则

    Database migration is a vital task in any environment, complex or otherwise. Seamless migrations are ...

  6. SQL Server 上云最佳实践

    内容来源:华为云社区 作者:华为云数据库高级项目经理/沈志鹏 沈志鹏: 在我开讲之前要先强调一下,刚才两个引擎所说的所有优点,SQL Server都有. 开讲前问一句,有没有人用过SQL Server ...

  7. sql azure 语法_如何将内部SQL Server数据库迁移到Azure

    sql azure 语法 Lately, database administrators often hear the question "have you tried Azure?&quo ...

  8. SQL SERVER数据库迁移操作

    1.关闭涉及数据库的链接程序,为了防止程序重启后连接,可以通过修改数据库端口解决 2.进行数据库所在位置及进行分离操作 tips:为什么要看路径,担心分离后,找不到文件喽!! 进行数据分离 3.拷贝数 ...

  9. 如何为报表服务器设置SQL Server数据库复制

    In this article, we'll discuss the purpose of database replication and show how you can implement Re ...

最新文章

  1. 阿里巴巴发送短信接口的使用
  2. 【uni-app】分享
  3. OpenFOAM程序开发的基本知识(基本术语)
  4. 高可用集群技术之corosync应用详解(一)
  5. php 数组区删除重复的,php – 从数组中删除重复的项目
  6. python 列表 元祖 字典,Python 列表、元组、字典
  7. 【转】从TXT导入到dataGridView
  8. 计算机组成原理第二次小组讨论课,巢湖电大开放教育计算机科学与技术(doc 6页).doc...
  9. 论文查重究竟查的是什么?其核心算法是怎样的?
  10. 【CV】MobileNetV2:具有倒置残差和线性瓶颈的 CNN 骨干网络
  11. Ripple相关资源汇总
  12. 「大话webpack」从零搭建
  13. DirectX12(D3D12)基础教程(十)——DXR(DirectX Raytracing)基础教程(上)
  14. 华东理工大学计算机图形答案,华东理工大学信息科学与工程学院硕士研究生导师张静...
  15. 强化学习——蒙特卡洛方法
  16. 【PID优化】基于正余弦算法 (SCA)优化PID实现微型机器人系统位置控制附simulink模型和matlab代码
  17. Jekins的简介和使用
  18. F. 1.小W 的质数(prime)[欧拉筛再理解]
  19. adb查看app接口信息
  20. 计算机cct 考试试题,基础计算机cct考试模拟题-20210331070830.docx-原创力文档

热门文章

  1. 64位BASM学习随笔(一)
  2. window.onload 函数不执行处理
  3. Linux---文件操作
  4. HTML+CSS+JS实现网页随机点名
  5. 全面屏手机有什么缺点?
  6. 都是打工的,为啥职场中存在着那么多勾引斗角?
  7. 想要挡住对向来车的远光灯,能否把公路中间的隔离墙垒高点来阻挡?
  8. 莺颠燕狂的拼音及解释
  9. 一览众山小的上一句是什么,怎么理解一览众山小的意思?
  10. 一些关于直播间人货场的打造干货,直播电商新手必须要了解人货场的概念