<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      SQL SERVER 2008 復制所有表結構、觸發器、存儲過程、視圖等(海典傳輸初始化)(一)

      USE [……]
      GO
      
      /****** Object:  StoredProcedure [dbo].[p_init_busno]    Script Date: 08/18/2022 16:14:53 ******/
      SET ANSI_NULLS ON
      GO
      
      SET QUOTED_IDENTIFIER OFF
      GO
      
       
       
      /*---------------------------------------------------------------
          功能:得到創建數據庫代碼,和初始化新業務機構的語句
          gthlu 2007-06-04
      ---------------------------------------------------------------*/
      CREATE proc [dbo].[p_init_busno](@busno varchar(10),@userid varchar(10))
      as
      
      declare @sql varchar(1000)
      declare @maxorderid int,@orderid int,@zoneno varchar(10)
      declare @procname nvarchar(100)
      
      --使有替換存儲過程設置查詢是否有替換存儲過程    YB 2020-5-13
      set @procname = dbo.f_get_rep_proc(OBJECT_NAME(@@PROCID)) 
       
      If @procname > ''      
      Begin      
          set @procname = 'exec ' + @procname + ' @busno,@userid'
          execute sp_executesql @procname, N'@busno varchar(10),@userid varchar(10)', @busno,@userid  
          return      
      End  
      
      if not exists(select * from c_org_busi where busno = @busno )
      begin 
         raiserror("指定的業務機構編碼沒有在“業務機構代碼”里設置好!",16,1)
         return 
      end 
      
      if not exists(select * from c_user_org where org_tran_code = @busno and userid = @userid and status = 1)
      begin 
         raiserror("請先將您自己的權限在“用戶對應機構”中設置為能使用目標業務機構!",16,1)
         return 
      end 
      
      if not exists(select * from c_org_busi b,c_zone c where b.busno=c.busno and b.busno=@busno)
      begin
         raiserror("指定的業務機構編碼沒有在“庫區設置”里設置好庫區!",16,1)
         return 
      end
      
      if not exists(select * from c_org_busi b,c_zone c,c_stall d where b.busno=c.busno 
          and c.zoneno=d.zoneno and b.busno=@busno and d.stalltype='11')
      begin
         raiserror("指定的業務機構編碼沒有在“貨位設置”里設置好【正常貨位】!",16,1)
         return 
      end
      
      -- 2966    如果啟用門店驗收確認功能,還需要檢查這兩個貨位
      if exists(select * from c_sys_ini where ini='2966' and para='1')
      begin
          if not exists(select * from c_org_busi b,c_zone c,c_stall d where b.busno=c.busno 
              and c.zoneno=d.zoneno and b.busno=@busno and d.stalltype='21')
          begin
             raiserror("指定的業務機構編碼沒有在“貨位設置”里設置好【待處理貨位】!",16,1)
             return 
          end
      
          if not exists(select * from c_org_busi b,c_zone c,c_stall d where b.busno=c.busno 
              and c.zoneno=d.zoneno and b.busno=@busno and d.stalltype='22')
          begin
             raiserror("指定的業務機構編碼沒有在“貨位設置”里設置好【不合格貨位】!",16,1)
             return 
          end
      end 
      
      
      
      create table #data(sql varchar(8000),orderid int identity(1,1),orderid_temp int null) 
      
      --免調試SQL系統參數    by liwenlong 20140521
      insert  into #data ( sql ) select  'SET ANSI_NULLS ON'    
      insert  into #data ( sql ) select  'go'    
      insert  into #data ( sql ) select  'SET QUOTED_IDENTIFIER OFF'    
      insert  into #data ( sql ) select  'go'   
      --免調SQL試系統參數 結束 by liwenlong 20140521
      
      insert into #data(sql)
      exec p_get_usertable
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql) 
      exec p_get_usertable_primary
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql) 
      exec p_get_usertable_index
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      exec p_get_objtext
      
      insert into #data(sql)
      select 'go'
      
      select @orderid = max(orderid) from #data
      
      insert into #data(sql)
      select "ALTER TABLE c_sys_ini disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_sys_ini','ini<>''1006'' and ini<>''1007'' and ini<>''1008'' and ini<>''1009'''
      insert into #data(sql)
      select "ALTER TABLE c_sys_ini enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "update c_sys_ini set para = '" + @busno + "' where ini = '1001'"
      
      insert into #data(sql)
      select 'go'
      
      
      insert into #data(sql)
      select "ALTER TABLE c_dddw disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_dddw',''
      insert into #data(sql)
      select "ALTER TABLE c_dddw enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_bill disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_bill ',''
      insert into #data(sql)
      select "ALTER TABLE c_bill enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_columns disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_columns ',''
      insert into #data(sql)
      select "ALTER TABLE c_columns enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_dyreport disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_dyreport ',''
      insert into #data(sql)
      select "ALTER TABLE c_dyreport enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_function disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_function',''
      insert into #data(sql)
      select "ALTER TABLE c_function enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_function_ext disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_function_ext',''
      insert into #data(sql)
      select "ALTER TABLE c_function_ext enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_sale_printer disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_sale_printer',''
      insert into #data(sql)
      select "ALTER TABLE c_sale_printer enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      
      insert into #data(sql)
      select "ALTER TABLE c_help disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_help',''
      insert into #data(sql)
      select "ALTER TABLE c_help enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_objects disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_objects',''
      insert into #data(sql)
      select "ALTER TABLE c_objects enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_period disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_period',''
      insert into #data(sql)
      select "ALTER TABLE c_period enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_print_m disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_print_m',''
      insert into #data(sql)
      select "ALTER TABLE c_print_m enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_print_c disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_print_c',''
      insert into #data(sql)
      select "ALTER TABLE c_print_c enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_proc_set disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_proc_set',''
      insert into #data(sql)
      select "ALTER TABLE c_proc_set enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_relation disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_relation',''
      insert into #data(sql)
      select "ALTER TABLE c_relation enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE c_retrieve disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_retrieve',''
      insert into #data(sql)
      select "ALTER TABLE c_retrieve enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      insert into #data(sql)
      select "ALTER TABLE t_tranitem disable trigger all"
      insert into #data(sql) 
      exec p_get_select 't_tranitem',''
      insert into #data(sql)
      select "ALTER TABLE t_tranitem enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      
      
      insert into #data(sql)
      select "ALTER TABLE c_stroke disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_stroke',''
      insert into #data(sql)
      select "ALTER TABLE c_stroke enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      
      
      insert into #data(sql)
      select "ALTER TABLE c_py disable trigger all"
      insert into #data(sql) 
      exec p_get_select 'c_py',''
      insert into #data(sql)
      select "ALTER TABLE c_py enable trigger all"
      
      insert into #data(sql)
      select 'go'
      
      select @sql = 
      "insert into #data(sql) exec p_get_select 'c_org_tran'," + """where org_tran_code = '" + @busno + "'"""
      exec( @sql)
      
      
      select @sql = 
      "insert into #data(sql) exec p_get_select 'c_org_tran'," + """where org_tran_code = '" + rtrim(dbo.f_sys_ini('1001')) + "'"""
      exec( @sql)
      
      insert into #data(sql)
      select "ALTER TABLE c_org_busi disable trigger all"
      select @sql = 
      "insert into #data(sql) exec p_get_select 'c_org_busi'," + """where busno = '" + @busno + "'"""
      exec( @sql)
      insert into #data(sql)
      select "ALTER TABLE c_org_busi enable trigger all"
      
      
      
      insert into #data(sql)
      select "ALTER TABLE c_user disable trigger all"
      select @sql = 
      "insert into #data(sql) exec p_get_select 'c_user'," + """where userid = '" + @userid + "'"""
      exec( @sql)
      insert into #data(sql)
      select "ALTER TABLE c_user enable trigger all"
      
      
      
      insert into #data(sql)
      select "ALTER TABLE c_user_func disable trigger all"
      select @sql = 
      "insert into #data(sql) exec p_get_select 'c_user_func'," + """where userid = '" + @userid + "'"""
      exec( @sql)
      insert into #data(sql)
      select "ALTER TABLE c_user_func enable trigger all"
      
      
      insert into #data(sql)
      select 'go'
      
      
      insert into #data(sql)
      select "ALTER TABLE c_user_func_ext disable trigger all"
      select @sql = 
      "insert into #data(sql) exec p_get_select 'c_user_func_ext'," + """where userid = '" + @userid + "'"""
      exec( @sql)
      insert into #data(sql)
      select "ALTER TABLE c_user_func_ext enable trigger all"
      
      
      
      insert into #data(sql)
      select "ALTER TABLE c_user_func_shop disable trigger all"
      select @sql = 
      "insert into #data(sql) exec p_get_select 'c_user_func_shop'," + """where userid = '" + @userid + "'"""
      exec( @sql)
      insert into #data(sql)
      select "ALTER TABLE c_user_func_shop enable trigger all"
      
      
      insert into #data(sql)
      select 'go'
      
      
      insert into #data(sql)
      select "ALTER TABLE c_user_org disable trigger all"
      select @sql = 
      "insert into #data(sql) exec p_get_select 'c_user_org'," + """where userid = '" + @userid + "'"""
      exec( @sql)
      insert into #data(sql)
      select "ALTER TABLE c_user_org enable trigger all"
      
      
      
      insert into #data(sql)
      select "ALTER TABLE c_user_dept disable trigger all"
      select @sql = 
      "insert into #data(sql) exec p_get_select 'c_user_dept'," + """where userid = '" + @userid + "'"""
      exec( @sql)
      insert into #data(sql)
      select "ALTER TABLE c_user_dept enable trigger all"
      
      
      update #data set orderid_temp = orderid
      
      
      select @maxorderid = max(orderid) from #data
      
      while @orderid < @maxorderid
        begin
          select @orderid = @orderid + 10
          insert into #data(sql,orderid_temp) select 'go',@orderid
        end 
      
      insert into #data(sql)
      select 'go'
      
      --新店所有的老郵件附件不傳下去
      update t_transet_c set maxserialno = convert(bigint,@@dbts) where tranid = '004' and tranorg_obj = @busno
      
      select sql from #data order by orderid_temp
      
      drop table #data
      
      
      
      GO

       其中,存儲過程 p_get_usertable 代碼如下:

      /*----------------------------------------------------------------------  
       功能:取得一個數據庫里所有用戶表的建表代碼    
       by gthlu 2005-10-15   
      -----------------------------------------------------------------------*/  
        
      CREATE  proc [dbo].[p_get_usertable]  
      as  
        
      declare @sql varchar(4000)  
      declare @tabname varchar(100)  
      declare @colname varchar(80),@cdefault int,@domain int,@xusertype smallint,  
              @prec smallint,@scale int,@isnullable int,@autoval int  ,@ctext_compute varchar(8000) 
      declare @procname nvarchar(100)
      declare @typeName sysname,@xscale tinyint
      
      --使有替換存儲過程設置查詢是否有替換存儲過程    YB 2020-5-13
      set @procname = dbo.f_get_rep_proc(OBJECT_NAME(@@PROCID)) 
       
      If @procname > ''      
      Begin      
          set @procname = 'exec ' + @procname  
          execute sp_executesql @procname 
          return      
      End  
        
      create table #tabtext(txt varchar(4000),orderid int identity(1,1))  
        
      declare tabname_cursor cursor for select a.name from sysobjects a,sysusers b    
              where a.xtype = 'u' and b.uid = a.uid and b.name = 'dbo' --and a.name = 't_ol_order_m'  
      open tabname_cursor  
      fetch next from tabname_cursor into @tabname  
        
      while @@fetch_status >= 0  
        begin   
           select @sql = 'if object_id(''' + @tabname + ''') is null ' + 'create table [' + @tabname + ']('  
              --修正sql2005下  autoval 不能正確判斷自增長字段--by黃才旺 2008-12-17 
           declare column_cursor cursor for  
           select syscolumns.name,syscolumns.cdefault,syscolumns.domain,syscolumns.xusertype,syscolumns.prec,c.name as typeName,
              syscolumns.scale,syscolumns.isnullable ,COLUMNPROPERTY(syscolumns.id,syscolumns.name,'IsIdentity')  ,b.text,c.xscale
           from syscolumns  left join syscomments b 
                  on  syscolumns.ID=b.ID AND syscolumns.Colid=b.number 
                 join systypes c on syscolumns.xusertype = c.xusertype
           where syscolumns.id = object_id(@tabname)  
           order by syscolumns.colid
        
          open column_cursor  
          fetch next from column_cursor into @colname,@cdefault,@domain,@xusertype,@prec,@typeName,
              @scale,@isnullable ,@autoval ,@ctext_compute,@xscale
      
          while @@fetch_status >= 0  
          begin   
              if len(@sql)>3600 
              begin 
                  insert into #tabtext(txt) select @sql  
                  set @sql=''
              end
              
              if len(isnull(@ctext_compute,''))>0 
                  select @sql=@sql + '[' + @colname + '] AS ' + @ctext_compute + ','
              else
              begin 
                  select @sql = @sql + '[' + @colname + ']' + ' ' + @typeName
                     + case when @prec is null or @prec = 0  or @prec = (select prec from systypes where xusertype = @xusertype and 
                                  (status <> 2 and name not in ('binary','char','nchar','nvarchar','varbinary','varchar') ))  then ' '    
                            else '(' + cast(case when @prec = -1 then case when @typeName in ('nchar','nvarchar') then 4000 else 8000 end else @prec end as varchar(10))   
                     + case when @scale is null or @scale = @xscale then ')'  
                            else ',' + cast(@scale as varchar(10)) + ')'  end end  
                     + case when @cdefault is null or @cdefault = 0 then ''  
                            else (select case when charindex('create',text) = 0 then ' default ' + text else '' end from syscomments where id = @cdefault) end   
                     + case @isnullable when 0 then ' not null'  
                                        when 1 then ' null'  
                                        else ' ' end
                     + case when @autoval <> 1 then ','   
                            else ' identity(' + convert(varchar,ident_seed(@tabname)) + ',' + convert(varchar,ident_incr(@tabname)) + '),' end
      
                  --select @sql = @sql + '[' + @colname + ']' + (select  ' ' + name from systypes where xusertype = @xusertype)  
         --            + case when @prec is null or @prec = 0  or @prec = (select prec from systypes where xusertype = @xusertype and 
         --                         (status <> 2 and name not in ('binary','char','nchar','nvarchar','varbinary','varchar') ))  then ' '    
         --                   else '(' + cast(case when @prec = -1 then 8000 else @prec end as varchar(10))   
         --            + case when @scale is null or @scale = (select scale from systypes where xusertype = @xusertype) then ')'  
         --                   else ',' + cast(@scale as varchar(10)) + ')'  end end  
         --            + case when @cdefault is null or @cdefault = 0 then ''  
         --                   else (select case when charindex('create',text) = 0 then ' default ' + text else '' end from syscomments where id = @cdefault) end   
         --            + case @isnullable when 0 then ' not null'  
         --                               when 1 then ' null'  
         --                               else ' ' end   
         --            + case when @autoval <> 1 then ','   
         --                   else ' identity(' + convert(varchar,ident_seed(@tabname)) + ',' + convert(varchar,ident_incr(@tabname)) + '),' end
              end 
      
              fetch next from column_cursor into @colname,@cdefault,@domain,@xusertype,@prec,@typeName,
                  @scale,@isnullable,@autoval  ,@ctext_compute,@xscale
          end  
          close column_cursor  
          deallocate column_cursor  
      
          fetch next from tabname_cursor into @tabname  
      
          select @sql = left(@sql,len(rtrim(@sql))-1) + ')'  
          insert into #tabtext(txt) select @sql  
          insert into #tabtext(txt) select 'go'  
      end   
      
      close tabname_cursor  
      deallocate tabname_cursor  
        
        
      --------------綁定列  
      insert into #tabtext(txt)  
      select txt = 'if object_id(''[' + name + ']'') is null exec(''' + replace(text,'''','''''') + ''')'  
      from sysobjects a,syscomments b  
      where a.id = b.id and a.xtype = 'D' and b.text like '%create%'  
        
      insert into #tabtext(txt) select 'go'  
        
      insert into #tabtext(txt)  
      select 'exec sp_bindefault ''[' + a.name + ']'',''[' + object_name(c.id) + '].[' + c.name + ']'''  
      from sysobjects a,syscomments b,syscolumns c  
      where a.id = b.id and a.xtype = 'D' and b.text like '%create%' and a.id = c.cdefault  
        
        
        
        
      select txt from #tabtext order by orderid  
      drop table #tabtext  
      
      GO

      存儲過程 p_get_usertable_primary代碼如下:

      /*----------------------------------------------------------------------
          功能:得到當前數據庫里所有表的主鍵代碼
          by gthlu 2007-06-02
      -----------------------------------------------------------------------*/
      CREATE proc [dbo].[p_get_usertable_primary]
      as
      
      DECLARE @table_id        int
      DECLARE @table_name    nvarchar(255)
      declare @colname varchar(255)
      declare @pkname varchar(255)
      declare @sql varchar(4000)
      declare @procname nvarchar(100)
      
      --使有替換存儲過程設置查詢是否有替換存儲過程    YB 2020-5-13
      set @procname = dbo.f_get_rep_proc(OBJECT_NAME(@@PROCID)) 
       
      If @procname > ''      
      Begin      
          set @procname = 'exec ' + @procname  
          execute sp_executesql @procname 
          return      
      End  
      
      --select @table_name = 'u_sale_c'
      create table #pktext(txt varchar(4000),orderid int identity(1,1))
      
      declare tabname_cursor cursor for 
      select a.name from sysobjects a,sysindexes b,sysusers c where a.type = 'u' and a.id = b.id and (b.status & 0x800) = 0x800 and a.uid = c.uid and c.name = 'dbo'
      
      open tabname_cursor
      fetch next from tabname_cursor into @table_name
      
      while @@fetch_status >= 0
        begin 
           SELECT @table_id = object_id(@table_name)
      
           select colname = convert(sysname,c.name),o.name,pkname = convert(sysname,i.name),
          rowid = case when c.name = index_col(@table_name, i.indid,  1) then convert (smallint,1)
                  when c.name = index_col(@table_name, i.indid,  2) then convert (smallint,2)
                  when c.name = index_col(@table_name, i.indid,  3) then convert (smallint,3)
                  when c.name = index_col(@table_name, i.indid,  4) then convert (smallint,4)
                  when c.name = index_col(@table_name, i.indid,  5) then convert (smallint,5)
                  when c.name = index_col(@table_name, i.indid,  6) then convert (smallint,6)
                  when c.name = index_col(@table_name, i.indid,  7) then convert (smallint,7)
                  when c.name = index_col(@table_name, i.indid,  8) then convert (smallint,8)
                  when c.name = index_col(@table_name, i.indid,  9) then convert (smallint,9)
                  when c.name = index_col(@table_name, i.indid, 10) then convert (smallint,10)
                  when c.name = index_col(@table_name, i.indid, 11) then convert (smallint,11)
                  when c.name = index_col(@table_name, i.indid, 12) then convert (smallint,12)
                  when c.name = index_col(@table_name, i.indid, 13) then convert (smallint,13)
                  when c.name = index_col(@table_name, i.indid, 14) then convert (smallint,14)
                  when c.name = index_col(@table_name, i.indid, 15) then convert (smallint,15)
                  when c.name = index_col(@table_name, i.indid, 16) then convert (smallint,16)
              end
           into #t
           from sysindexes i, syscolumns c, sysobjects o 
           where o.id = @table_id and o.id = c.id and o.id = i.id and (i.status & 0x800) = 0x800
          and (c.name = index_col (@table_name, i.indid,  1) or
               c.name = index_col (@table_name, i.indid,  2) or
               c.name = index_col (@table_name, i.indid,  3) or
               c.name = index_col (@table_name, i.indid,  4) or
               c.name = index_col (@table_name, i.indid,  5) or
               c.name = index_col (@table_name, i.indid,  6) or
               c.name = index_col (@table_name, i.indid,  7) or
               c.name = index_col (@table_name, i.indid,  8) or
               c.name = index_col (@table_name, i.indid,  9) or
               c.name = index_col (@table_name, i.indid, 10) or
               c.name = index_col (@table_name, i.indid, 11) or
               c.name = index_col (@table_name, i.indid, 12) or
               c.name = index_col (@table_name, i.indid, 13) or
               c.name = index_col (@table_name, i.indid, 14) or
               c.name = index_col (@table_name, i.indid, 15) or
               c.name = index_col (@table_name, i.indid, 16)
              )
      
           select top 1 @pkname = pkname from #t
      
           declare primary_cursor cursor for select colname from #t order by rowid
      
           open primary_cursor
      
           fetch next from primary_cursor into @colname
           select @sql = "if not exists(select * from sysobjects where object_name(parent_obj) = '" + @table_name + "' and type = 'k') "
                    + ' alter table ' + @table_name + ' add primary key ('
           while @@fetch_status >= 0
             begin 
               select @sql = @sql + @colname + ','
               fetch next from primary_cursor into @colname
      
             end
      
           select @sql = left(@sql,len(rtrim(@sql))-1) + ')'
           insert into #pktext(txt) select @sql
           insert into #pktext(txt) select 'go'
      
           close primary_cursor
           deallocate primary_cursor
      
           drop table #t
      
           fetch next from tabname_cursor into @table_name
        end
      
      close tabname_cursor
      deallocate tabname_cursor
      
      select txt from #pktext order by orderid
      drop table #pktext
      
      
      GO

      存儲過程 p_get_usertable_index代碼如下:

      /*----------------------------------------------------------------------
          功能:得到當前數據庫里所有索引創建代碼 
          by gthlu 2007-06-02
      -----------------------------------------------------------------------*/
      CREATE proc [dbo].[p_get_usertable_index]
      as
      
      
      DECLARE @table_id        int
      DECLARE @table_name    nvarchar(255)
      declare @index_name varchar(255)
      declare @colname varchar(255)
      declare @sql varchar(4000)
      declare @status int 
      declare @procname nvarchar(100)
      
      --使有替換存儲過程設置查詢是否有替換存儲過程    YB 2020-5-13
      set @procname = dbo.f_get_rep_proc(OBJECT_NAME(@@PROCID)) 
       
      If @procname > ''      
      Begin      
          set @procname = 'exec ' + @procname  
          execute sp_executesql @procname 
          return      
      End  
      
      create table #pktext(txt varchar(4000))
      
      declare tabname_cursor cursor for 
      select a.name as table_name,b.name,b.status as index_name from sysobjects a,sysindexes b ,sysusers c
      where a.xtype = 'u' and a.id = b.id and (b.status & 0x800) <> 0x800 and (b.status & 64)=0 and indid > 0 and indid < 255 and 
          c.name = 'dbo' and a.uid = c.uid
      
      open tabname_cursor
      fetch next from tabname_cursor into @table_name,@index_name,@status
      
      while @@fetch_status >= 0
        begin 
           SELECT @table_id = object_id(@table_name)
      
           select colname = convert(sysname,c.name),o.name,@index_name as index_name,@status as status,
          rowid = case when c.name = index_col(@table_name, i.indid,  1) then convert (smallint,1)
                  when c.name = index_col(@table_name, i.indid,  2) then convert (smallint,2)
                  when c.name = index_col(@table_name, i.indid,  3) then convert (smallint,3)
                  when c.name = index_col(@table_name, i.indid,  4) then convert (smallint,4)
                  when c.name = index_col(@table_name, i.indid,  5) then convert (smallint,5)
                  when c.name = index_col(@table_name, i.indid,  6) then convert (smallint,6)
                  when c.name = index_col(@table_name, i.indid,  7) then convert (smallint,7)
                  when c.name = index_col(@table_name, i.indid,  8) then convert (smallint,8)
                  when c.name = index_col(@table_name, i.indid,  9) then convert (smallint,9)
                  when c.name = index_col(@table_name, i.indid, 10) then convert (smallint,10)
                  when c.name = index_col(@table_name, i.indid, 11) then convert (smallint,11)
                  when c.name = index_col(@table_name, i.indid, 12) then convert (smallint,12)
                  when c.name = index_col(@table_name, i.indid, 13) then convert (smallint,13)
                  when c.name = index_col(@table_name, i.indid, 14) then convert (smallint,14)
                  when c.name = index_col(@table_name, i.indid, 15) then convert (smallint,15)
                  when c.name = index_col(@table_name, i.indid, 16) then convert (smallint,16)
              end
           into #t
           from sysindexes i, syscolumns c, sysobjects o 
           where o.id = @table_id and o.id = c.id and o.id = i.id and (i.status & 0x800) <> 0x800 and i.name = @index_name and 
          indid > 0 and indid < 255 and (i.status & 64)=0
          and (c.name = index_col (@table_name, i.indid,  1) or
               c.name = index_col (@table_name, i.indid,  2) or
               c.name = index_col (@table_name, i.indid,  3) or
               c.name = index_col (@table_name, i.indid,  4) or
               c.name = index_col (@table_name, i.indid,  5) or
               c.name = index_col (@table_name, i.indid,  6) or
               c.name = index_col (@table_name, i.indid,  7) or
               c.name = index_col (@table_name, i.indid,  8) or
               c.name = index_col (@table_name, i.indid,  9) or
               c.name = index_col (@table_name, i.indid, 10) or
               c.name = index_col (@table_name, i.indid, 11) or
               c.name = index_col (@table_name, i.indid, 12) or
               c.name = index_col (@table_name, i.indid, 13) or
               c.name = index_col (@table_name, i.indid, 14) or
               c.name = index_col (@table_name, i.indid, 15) or
               c.name = index_col (@table_name, i.indid, 16)
              )
      
           select top 1 @index_name = index_name from #t
      
      
      
           declare primary_cursor cursor for select colname from #t order by rowid
      
           open primary_cursor
      
           fetch next from primary_cursor into @colname
           select @sql = "if exists (select * from sysindexes where name = '" + @index_name + "' and id = object_id('" + @table_name + "')) " 
                + "drop index " + @table_name + "." + @index_name
                    + ' CREATE '+ case WHEN (@status & 2)<>0 then 'UNIQUE ' ELSE '' END + 'INDEX ' + @index_name + ' ON ' + @table_name + '('
           while @@fetch_status >= 0
             begin 
               select @sql = @sql + @colname + ','
               fetch next from primary_cursor into @colname
      
             end
      
      
      
           select @sql = left(@sql,len(rtrim(@sql))-1) + ')'
           insert into #pktext select @sql
           insert into #pktext select 'go'
      
           close primary_cursor
           deallocate primary_cursor
      
           drop table #t
      
           fetch next from tabname_cursor into @table_name,@index_name,@status
        end
      
      close tabname_cursor
      deallocate tabname_cursor
      
      select * from #pktext
      drop table #pktext
      
      
      
      
      GO

      存儲過程 p_get_objtext代碼如下:

      /*--------------------------------------------------------------------------------
          功能:取數據庫里的全部存儲過程、觸發器和視圖,只適用于未加密的過程、觸發器和視圖  
              by gthlu 2005-10-14 
       
          修改:增加了取函數的代碼,解決了因代碼太長,導致截行問題,和視圖嵌套調用后運行報對象無效錯誤。 2007-06-13
      ---------------------------------------------------------------------------------*/
      ALTER procedure [dbo].[p_get_objtext]
      as
       
      set nocount on
       
      declare @BlankSpaceAdded   int
      ,@BasePos       int
      ,@CurrentPos    int
      ,@TextLength    int
      ,@LineId        int
      ,@AddOnLen      int
      ,@LFCR          int 
      ,@DefinedLength int
      ,@SyscomText    nvarchar(4000)
      ,@Line          nvarchar(2000)
      ,@objid int
      ,@objname nvarchar(776)
      ,@objrowid int
      ,@maxorderid int 
      ,@times int 
       declare @procname nvarchar(100)
      
      --使有替換存儲過程設置查詢是否有替換存儲過程    YB 2020-5-14
      set @procname = dbo.f_get_rep_proc(OBJECT_NAME(@@PROCID)) 
       
      If @procname > ''      
      Begin      
          set @procname = 'exec ' + @procname  
          execute sp_executesql @procname 
          return      
      End  
      
      Select @DefinedLength = 2000
      SELECT @BlankSpaceAdded = 0 
      if OBJECT_ID('tempdb..#objtext') is not null drop table #objtext
      create table #objtext(txt nvarchar(2000),id int,LineId    int)
       
       if OBJECT_ID('tempdb..#objname') is not null drop table #objname
      select distinct rtrim(object_name(a.id)) objname,case a.xtype
                                 when 'V' then 400
                                 when 'FN' then 600
                                 when 'IF' then 300
                                 when 'TF' then 500
                                 when 'TR' then 100
                                 when 'P' then 200
                                 else 0
                            end orderid ,a.xtype,a.id
      into #objname
      from sysobjects a (nolock),sysusers b (nolock),syscomments c (nolock)
      where a.xtype in ('FN','IF','TF','v','tr','p') and a.status >= 0 and a.uid = b.uid and b.name = 'dbo'
          and c.encrypted<>1 and a.id = c.id 
          and left(lower(a.name),5) not in (lower('p_b2c'),lower('p_b2b'))
          and a.name not like 'jc_p_%'
          and not exists(select 1 from c_initsql_except where a.name = c_initsql_except.objectname)
          
          
      --p_b2c,p_b2b去掉電商的存儲過程,因為里面用了些sql2000不支持的sql
       
       
      -----------------------------------------------視圖被嵌套調用的先排序排在前面。
      if OBJECT_ID('tempdb..#temp') is not null drop table #temp
       create table #temp (objname varchar(200),id int,row int identity(1,1))
      declare @id int 
      
      if OBJECT_ID('tempdb..#tmpmemts') is not null drop table #tmpmemts
       select d.id,d.text into #tmpmemts from #objname c ,syscomments d (nolock) where c.id = d.id and c.xtype = 'V' 
      
      
      declare cursor_obj_v cursor for select rtrim(a.objname),a.id from #objname a where a.xtype = 'v' order by orderid
      open cursor_obj_v
      
              
      fetch next from cursor_obj_v into @objname,@id 
      while @@fetch_status >= 0
      begin  
          if exists (select * from #tmpmemts where id <> @id  and charindex(@objname ,text)>0)
          begin 
              insert #temp (objname,id )select @objname,@id 
          end 
          fetch next from cursor_obj_v into @objname,@id 
      end 
      close cursor_obj_v
      deallocate cursor_obj_v
      
      --select * from #temp
      
      while 1 = 1
        begin 
          --select * into #order from #temp
          select @times = isnull(@times,0) + 1  --為了防止死循環,當循環次數大于10次后,跳出。
          if @times > 10 break
       
          SELECT @maxorderid = max(orderid) FROM #objname where xtype = 'v' 
       
          update a 
          set orderid = orderid + row + abs(orderid - @maxorderid) from #objname a,#temp b 
          where a.objname = b.objname
       
         if object_id('tempdb..#temp1') is not null drop table #temp1
          select a.objname,identity(int,1,1) row 
          into #temp1
          from #objname a ,#tmpmemts b ,#temp e
          where a.id = b.id and a.xtype = 'v' and a.objname = e.objname and 
              exists(select * from #objname c ,#tmpmemts d ,#temp f
                  where c.id = d.id and c.xtype = 'V' and b.id <> d.id and c.objname = f.objname and charindex(a.objname ,text)>0)
              
          if @@rowcount = 0 and @times > 10 break
       
          truncate table #temp
       
          set identity_insert #temp on 
          insert into #temp(objname,row) select objname,row from #temp1
          drop table #temp1
        end
        
        if object_id('tempdb..#tmpmemts') is not null drop table #tmpmemts
        if object_id('tempdb..#temp1') is not null drop table #temp1
      ---------------------------------------------------------------------
      
       
      if OBJECT_ID('tempdb..#tmpmemts_all') is not null drop table #tmpmemts_all
       select d.id,d.text,number,colid into #tmpmemts_all from #objname c ,syscomments d (nolock) where c.id = d.id  
       
      declare cursor_obj cursor for select objname,id from #objname order by orderid 
      open cursor_obj
       
      fetch next from cursor_obj into @objname,@id
      select @objid = 1
      while @@fetch_status >= 0
        begin 
           select @objrowid = isnull(@objrowid,0) + 1
       
          if OBJECT_ID('tempdb..#CommentText') is not null drop table   #CommentText 
           CREATE TABLE #CommentText
           (LineId    int,
            Text  nvarchar(2000) collate database_default)
       
           insert into #commenttext select 0,'if object_id(''' + @objname + ''') is not null '
                  + case (select xtype from sysobjects (nolock) where id = object_id(@objname))
                         when 'v' then 'drop view ' + @objname
                         when 'FN' then 'drop function ' + @objname
                         when 'IF' then 'drop function ' + @objname
                         when 'TF' then 'drop function ' + @objname
                         when 'tr' then 'drop trigger ' + @objname
                         when 'p' then 'drop proc ' + @objname
                         else ''
                    end
       
           insert into #commenttext select 1,'go' union all select 2,char(13)
       
           DECLARE ms_crs_syscom  CURSOR LOCAL
           FOR SELECT text FROM #tmpmemts_all WHERE id = @id order by number,colid FOR READ ONLY
       
           SELECT @LFCR = 2
           SELECT @LineId = 3
           select @Line = ''
       
           OPEN ms_crs_syscom
       
           FETCH NEXT FROM ms_crs_syscom into @SyscomText
       
           WHILE @@fetch_status >= 0
           BEGIN
       
               SELECT  @BasePos    = 1
               SELECT  @CurrentPos = 1
               SELECT  @TextLength = LEN(@SyscomText)
       
               WHILE @CurrentPos  != 0
               BEGIN
                   SELECT @CurrentPos =   CHARINDEX(char(13)+char(10), @SyscomText, @BasePos)
       
                   IF @CurrentPos != 0
                   BEGIN
                       While (isnull(LEN(@Line),0) + @BlankSpaceAdded + @CurrentPos-@BasePos + @LFCR) > @DefinedLength
                       BEGIN
                           SELECT @AddOnLen = @DefinedLength-(isnull(LEN(@Line),0) + @BlankSpaceAdded)
                           INSERT #CommentText VALUES
                           ( @LineId,
                             isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText, @BasePos, @AddOnLen), N''))
                           SELECT @Line = NULL, @LineId = @LineId + 1,
                                  @BasePos = @BasePos + @AddOnLen, @BlankSpaceAdded = 0
                       END
                       SELECT @Line    = isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText, @BasePos, @CurrentPos-@BasePos + @LFCR), N'')
                       SELECT @BasePos = @CurrentPos+2
                       INSERT #CommentText VALUES( @LineId, @Line )
                       SELECT @LineId = @LineId + 1
                       SELECT @Line = NULL
                   END
                   ELSE
                   BEGIN
                       IF @BasePos <= @TextLength
                       BEGIN
                           While (isnull(LEN(@Line),0) + @BlankSpaceAdded + @TextLength-@BasePos+1 ) > @DefinedLength
                           BEGIN
                               SELECT @AddOnLen = @DefinedLength - (isnull(LEN(@Line),0) + @BlankSpaceAdded)
                               INSERT #CommentText VALUES
                               ( @LineId,
                                 isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText, @BasePos, @AddOnLen), N''))
                               SELECT @Line = NULL, @LineId = @LineId + 1,
                                   @BasePos = @BasePos + @AddOnLen, @BlankSpaceAdded = 0
                           END
                           SELECT @Line = isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText, @BasePos, @TextLength-@BasePos+1 ), N'')
                           if LEN(@Line) < @DefinedLength and charindex(' ', @SyscomText, @TextLength+1 ) > 0
                           BEGIN
                               SELECT @Line = @Line + ' ', @BlankSpaceAdded = 1
                           END
                       END
                   END
               END
       
               FETCH NEXT FROM ms_crs_syscom into @SyscomText
           END
       
           IF @Line is NOT NULL
               INSERT #CommentText VALUES( @LineId, @Line )
       
           CLOSE  ms_crs_syscom
           DEALLOCATE     ms_crs_syscom
       
           insert into #commenttext select @lineid+1,char(13) union all select @lineid + 2,'go' union all select @lineid + 3,char(13)
           insert into #objtext select Text,@objrowid,lineid from #CommentText order by LineId
           select @objid = @objid + 1
       
       
           DROP TABLE     #CommentText
       
           fetch next from cursor_obj into @objname,@id
       
        end
      close cursor_obj
      deallocate cursor_obj
       
      select replace(txt,char(9),'        ') from #objtext order by id desc,lineid
      drop table #objtext
      drop table #objname,#temp
       
      if OBJECT_ID('tempdb..#tmpmemts_all') is not null drop table #tmpmemts_all
      
      return (0)

       

      posted @ 2022-08-18 16:19  竹樓風雨聲  閱讀(284)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久成人 久久鬼色| 日韩精品国产二区三区| 国产影片AV级毛片特别刺激| 国产无套内射又大又猛又粗又爽| 狠狠综合久久久久综| 91精品91久久久久久| 免费人成年激情视频在线观看| 高清日韩一区二区三区视频| 国产精品亚洲二区在线看| 国产999精品2卡3卡4卡| 日本一卡2卡3卡四卡精品网站| 国产一区二区视频啪啪视频| 在线免费观看毛片av| 天美麻花果冻视频大全英文版| 国产精品免费第一区二区| 熟女一区| 国内精品伊人久久久久影院对白 | 日韩高清不卡免费一区二区| 四虎国产精品永久在线| 99福利一区二区视频| 亚洲欧洲日产国码久在线| 国产99视频精品免费视频6| japanese无码中文字幕| 库车县| 日本区二区三区不卡视频| 在线 欧美 中文 亚洲 精品| 久久综合久中文字幕青草| 国产欧美亚洲精品第1页| 成人亚洲欧美成αⅴ人在线观看| 国产精品女生自拍第一区| 中文字幕少妇人妻精品| 华人在线亚洲欧美精品| 国产成人综合亚洲第一区| 性欧美三级在线观看| 老熟妇国产一区二区三区| 华人在线亚洲欧美精品| 国产影片AV级毛片特别刺激| 久久婷婷成人综合色| 亚洲产在线精品亚洲第一站一 | 亚洲色大成网站www永久一区| 亚洲av区一区二区三区|