SQL Server数据库下教你如何做导库SQL

2016-01-29 16:04 6 1 收藏

SQL Server数据库下教你如何做导库SQL,SQL Server数据库下教你如何做导库SQL

【 tulaoshi.com - SQLServer 】

导库SQL -- 适用于sql server

在企业信息化建设过程中,数据库实体做为存放企业运营数据的仓库,具有至高重要的地位。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

为防止数据丢失,事前预防是很关键的,诸如数据库定期备份、磁盘阵列、集群解决方案等等。

但是一旦发生数据丢失或是损坏的现象,而且不能通过正常的修复手段来处理,则可以通过导库来尝试一下。

国产的软件包括k/3,u8 等等,都有类似管理数据库的工具,管理工具中提供新建数据库的功能,新建的同类(指管理工具中提供的类别)数据库实体(国产软件通常称之为“账套”)有相同的表结构。因此,如果账套损坏,且无法修复的,可以新建一同类型的账套实体,通过下面的导库语句把被损坏的账套的数据导入新建账套中。

下面的语句提供了一个比sql server DTS导入导出更加灵活的工具。不过需要大家仔细理解才能运用的得心应手哈!!

----该存储过程建立在新帐套中,并在新账套中执行

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)
if Exists(select * from sysobjects where name=N'sp_ExportDatabase' And Xtype='P')    Drop PROCEDURE [sp_ExportDatabase] GoCreate PROCEDURE [sp_ExportDatabase] (    @SourceDB varchar(100)) ----创建存储过程 sp_ExportDatabaseASBegin      Set NoCount On    Declare @Utb sysname     ------用户表名    Declare @ColName sysname   ------列名    Declare @tid int       ------用户表的ID    Declare @sql nvarchar(3000)------存放拼出的sql    Declare @len int    --定义游标取回用户建立的表    sELECT @SourceDB=@SourceDB+'.'    Declare Ctb Cursor For     Select name,id From sysobjects     Where xtype ='U' ----如果在导库过程中因某表存在错误而导致导库过程停止 ,则可以尝试修复此表。              ----如果此表不是很重要、或是此表无法修复,则可以在此加入条件     And name in (tablename1,tablename2,……)     ------tablename1,tablename2 表示不能修复的表的名字    Order by name    Open Ctb    Fetch Ctb Into @Utb,@tid    While (@@FETCH_STATUS=0)    Begin   ----禁用当前数据库中所有表的约束、触发器        Select @Utb='Dbo.'+@Utb        Select @SQL='Alter Table '+@Utb+' Disable Trigger All; '+ ' ALTER TABLE '+ @Utb +' NOCHECK CONSTRAINT All; '        exec ( @SQL)        Fetch Ctb Into @Utb,@tid    End       close ctb    Open Ctb        Fetch Ctb Into @Utb,@tid        While (@@FETCH_STATUS=0)        Begin          Select @Utb='Dbo.'+@Utb                          exec (' Delete ' + @Utb) Set @sql=''              Declare Clu Cursor For Select name From syscolumns Where id=@tid And iscomputed=0 and xtype<189              Open Clu              Fetch Clu Into @ColName              While (@@FETCH_STATUS=0)              Begin     ----把列名以逗号隔开,拼成字符串      Set @sql=@sql+ @ColName + ','                   Fetch Clu Into @ColName              End              Close Clu              DeAllocate Clu              ----构造字符串                       Set @len=Len(@sql)              If @len0               Begin   ----把源数据库中的表导入到当前数据库中                  Select @sql=left(@sql,@len-1)                  Set @sql='Insert Into '+ @Utb + ' ('+@sql+') '+' Select '+@sql+' From ' + @SourceDB+ @Utb                  print 'Importing Table : ' +@utb+'...'                  If Exists (Select name From syscolumns Where id=@tid and status=0x80)                      begin                      Select @SQl='Set IDENTITY_INSERT '+ @Utb + ' ON' + ' Delete ' + @Utb+' '+@sql                      print @sql                      end                  Else                      Select @SQl=@sql                          Exec ( @sql)                  If Exists (Select name From syscolumns Where id=@tid and status=0x80)                      Exec( 'Set IDENTITY_INSERT '+ @Utb + ' Off')                  print 'Importing Table : ' +@utb+' complete'              End     Fetch Next From Ctb Into @Utb,@tid        End    Close Ctb    Open Ctb    Fetch Ctb Into @Utb,@tid    While (@@FETCH_STATUS=0)    Begi
                        

来源:https://www.tulaoshi.com/n/20160129/1497271.html

延伸阅读
标签: SQLServer
4.5.1 注释符(Annotation) 在Transact-SQL 中可使用两类注释符。 ANSI 标准的注释符“--” 用于单行注释; 与C语言相同的程序注释符号,即“/**/”。“/*”用于注释文字的开头,“*/”用于注释文字的结尾,可在程序中标识多行文字为注释。 4.5.2 运算符(Operator)     1 算术运算符 包括:+(加)、―(...
标签: SQLServer
Enterprise Manager 提供了可视化的界面,在其中建立数据库及其对象,如表、视图、缺省值等,很少需要用户自己编辑程序代码。但对用户来说,了解这些对象是如何通过SQL语言建立,的并得到其SQL 语言脚本(Script) 是很有好处。的在Enterprise Manager 中提供了工具,以帮助用户产生这些对象的SQL 语言脚本。 生成对象的SQL 脚本方法如下: (1) ...
标签: SQLServer
4.7.1 BACKUP BACKUP 命令用于将数据库内容或其事务处理日志备份到存储介质上(软盘、硬盘、磁带)。等SQL Server 7.0 以前的版本用的是DUMP 命令来执行此功能,从SQL Server 2000起,不再使用DUMP 命令。关于BACKUP 命令的详情请参见“数据备份与恢复”章节。      4.7.2 CHECKPOINT 语法如下: CHECKPOINT CH...
标签: SQLServer
在企业管理器中可以很方便地调用其它SQL Server 工具,如SQL Server Query Analyzer (查询分析器)、SQL Server Profiler (跟踪器)等,只须从“Tools (工具)”菜单中选择相应的工具即可。 SQL Server 2000 中提供了大量的向导工具,可以引导用户完成一系列的数据库与服务器管理工作。可以从“Tools (工具)”菜单中选择“Wizards” 选项,或从工...
标签: SQLServer
除了使用系统提供的数据类型外,用户还可以根据需要用自定义的数据类型来定义表的列或声明变量。 7.3.1 用Enterprise Manager 创建用户自定义数据类型 用Enterprise Manager 创建用户自定义数据类型的方法是:在Enterprise Manager 中选择要创建用户自定义类型的数据库,在数据库对象“User Defined Data Types”上单击右键,从开始菜单...

经验教程

141

收藏

42
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部