午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > 合并SQL腳本文件的方法分享

合并SQL腳本文件的方法分享

熱門標簽:蘭州語音外呼系統運營商 al智能電話機器人 沒聽見電話機器人幫你接 數字匠心電銷機器人 銀川高頻外呼回撥系統多少錢 最新人工智能電銷機器人 陜西電銷外呼系統好用嗎 成都電話外呼系統一般多少錢 如何做地圖標注圖鋪
概述
--------------------------------------------------------------------------------
在平時的工作中,我會經常的碰到這樣需要合并SQL腳本的問題。如,有很多的SQL腳本文件,需要按照一定的先后順序,再生成一個合并SQL腳本文件,然后再發布到用戶SQL Server服務器上。
合并SQL腳本文件,最直接的方法就是新建1個空白的SQL腳本文件,再把需要合并的SQL腳本文件內容復制到新建的SQL文件中。當初,我合并腳本的操作方法與剛說的有類似。我在Microsoft SQL Server Management Studio(MSSMS)新建一個查詢,再把要合并的SQL腳本文件,一個一個的打開,并復制內容到新建查詢中,然后生成合并腳本文件。
上面的方法,對于幾個SQL腳本文件合并來說,似乎沒什么問題。但是,當我們要合并的腳本很多,一文件一個文件的內容復制,是比較繁瑣的事情,要是能有1個簡單合并腳本工具就最好不過了。下面介紹我寫的兩個合并SQL腳本文件的存儲過程.
第1個存儲過程,只要調用sp_OACreate實現合并SQL腳本文件。
復制代碼 代碼如下:

use master
Go
if object_id('sp_ScriptMerge') Is Not Null
Drop proc sp_ScriptMerge
Go
Create Proc sp_ScriptMerge
(
@Path nvarchar(1024),
@FilesList nvarchar(max)= null,
@NewFileName nvarchar(1024)=null
)
As
/*合并SQL腳本文件(SQL)V1.0 Andy 2011-9-1*/
Declare
@ScriptNr nchar(21),
@subdirectoryStr nvarchar(512),
@Dir nvarchar(1024),
@ScriptCount int
Declare @subdirectoryTB Table (subdirectory nvarchar(512),depth smallint,[file] smallint)
Declare @tmp table(row smallint identity primary key,fileName nvarchar(512))
Set Nocount on
if right(@Path,1)>'\' Set @Path=@Path+''
If Isnull(@NewFileName,'')='' Set @NewFileName=N'合并腳本-'+Convert(nvarchar(8),getdate(),112)
if lower(right(@NewFileName,4))>'.sql' Set @NewFileName=@NewFileName+'.sql'
Set @NewFileName=@Path+@NewFileName
Set @ScriptNr='Nr: '+Replace(replace(Replace(replace(convert(nvarchar(23),getdate(),121),'-',''),':',''),' ',''),'.','')
Set @ScriptCount=0
/*讀取腳本文件內容*/
if @FilesList >''
Begin
Set @FilesList='Select N'''+replace(@FilesList,',',''' Union All Select N''')+''''
Insert into @tmp([fileName]) Exec(@FilesList)
End
if object_id('Tempdb..#') Is Not Null Drop Table #
Create table #(row int identity(1,1) Primary key,text nvarchar(max))
Insert into @subdirectoryTB Exec xp_dirtree @Path,1,1
Declare cur_file cursor for
Select a.subdirectory
From @subdirectoryTB As a
left Join @tmp As b ON b.fileName=a.subdirectory
Where a.[file]=1 And a.subdirectory like '%.sql'
And (b.fileName=a.subdirectory Or Not Exists(Select 1 From @tmp))
Order By isnull(b.row,0),a.subdirectory
Open cur_file
fetch next From cur_file into @subdirectoryStr
While @@FETCH_STATUS = 0
Begin
Set @ScriptCount=@ScriptCount+1
Insert into #(text) Select +Char(13)+Char(10)+ N'Go'+Char(13)+Char(10)+ N'/* '+@ScriptNr+' ('+rtrim(@ScriptCount)+'): '+@subdirectoryStr+' */'+Char(13)+Char(10)+ N'Go'+Char(13)+Char(10)
Set @Dir='Type '+@Path+'"'+@subdirectoryStr+'"'
Insert into #(text)
Exec sys.xp_cmdshell @Dir
fetch next From cur_file into @subdirectoryStr
End
Close cur_file
Deallocate cur_file
if @ScriptCount >0 Insert into #(text) Select +Char(13)+Char(10)+ N'Go'+Char(13)+Char(10)+ N'/* '+@ScriptNr+' 合并完成(合計 '+rtrim(@ScriptCount)+' 各腳本文件). */'+Char(13)+Char(10)+ N'Go'+Char(13)+Char(10)
/*寫入合并腳本文件*/
if @ScriptCount>0
Begin
Declare @object int,
@FileID int,
@hr int,
@src varchar(255),
@desc varchar(255),
@row int,
@text nvarchar(max)
Exec @hr=sp_OACreate 'Scripting.FileSystemObject',@object output
If @hr > 0 Goto File_ErrorHandler
Exec @hr = sp_OAMethod @object,'CreateTextFile',@FileID OUTPUT, @NewFileName
If @hr > 0 Goto File_ErrorHandler
Set @row=1
While Exists(Select 1 From # Where row=@row)
Begin
Set @text=(Select text From # Where row=@row)
Exec @hr = sp_OAMethod @FileID, 'WriteLine', NULL, @text
Set @row=@row +1
End
Goto File_Done
File_ErrorHandler:
Print N'*********** 讀寫文件的時候發生錯誤 ***********'
Exec @hr=sp_OAGetErrorInfo @object, @src OUT, @desc OUT
Select convert(varbinary(4),@hr) As hr, @src As Source, @desc As Description
File_Done:
Exec @hr = sp_OADestroy @FileID
Exec @hr = sp_OADestroy @object
Print N'*********** 合并腳本完成 ***********'
Print N'合并后腳本文件: '+@NewFileName
End
Go

調用上面存儲過程前,需要確認啟用 OLE Automation Procedures和xp_cmdshell 選項:
復制代碼 代碼如下:

調用上面存儲過程前,需要確認啟用 OLE Automation Procedures和xp_cmdshell 選項:
復制代碼 代碼如下:

Exec sys.sp_configure @configname = 'show advanced options',@configvalue = 1
reconfigure
go
Exec sys.sp_configure @configname = 'xp_cmdshell',@configvalue = 1
reconfigure
Go
Exec sys.sp_configure @configname = 'Ole Automation Procedures',@configvalue = 1
reconfigure
Go

測試:
復制代碼 代碼如下:

use master
GO
Exec master.dbo.sp_ScriptMerge
@Path = 'C:\Users\Administrator\Desktop\temp', -- nvarchar(1024)
@FilesList = '', -- nvarchar(max)
@NewFileName = '合并腳本20110905.sql' -- nvarchar(1024)

*********** 合并腳本完成 ***********合并后腳本文件: C:\Users\Administrator\Desktop\temp\合并腳本20110905.sql第2個是CLR存儲過程,使用C#代碼實現合并SQL腳本文件。
--------------------------------------------------------------------------------
C#代碼:
復制代碼 代碼如下:

using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;
using System.IO;
using System.Text;
public class clScriptMerge
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SQLScriptMerge(string Path, string FilesList, string NewFileName)
{
try
{
string[] strFiles ;
FileInfo[] myFileInfo = (new DirectoryInfo(Path)).GetFiles("*.sql");
string strScriptNr = @"Nr" + DateTime.Now.ToString("yyyyMMddHHmmssFFF");
int intCount=0;
if (NewFileName == null || NewFileName=="")
{
NewFileName = "合并腳本" + DateTime.Now.ToString("yyyyMMdd") + ".sql";
}
SqlContext.Pipe.Send(NewFileName.ToString()); //打印已合并的SQL文件名
// 1.獲得SQL腳本列表
if (FilesList != "")
{
strFiles = FilesList.Split(','); //篩分SQL腳本文件名列表,以","分隔
}
else
{
strFiles = new string[myFileInfo.Length];
for (int i = 0; i myFileInfo.Length; i++)
{
strFiles[i] = myFileInfo[i].Name;
}
}
// 2.合并腳本
SqlContext.Pipe.Send("【SQL腳本文件列表】:\n--------------------------------------------");
StreamWriter SW = new StreamWriter(Path + @"\" + NewFileName, true, Encoding.Unicode); //使用Unicode編碼
SW.WriteLine(@"Go\n/*============ " + strScriptNr + "====Start===================================*/\nGo\n"); //記錄生成的合并腳本編號合并動作的開始位置
foreach (string strFile in strFiles)
{
if (strFile !=NewFileName)
{
intCount += 1;
SW.WriteLine(@"/* " + strScriptNr +@" ("+intCount+@"): " + strFile + "*/\nGo\n"); //記錄合并哪一個腳本文件
using (StreamReader SR = new StreamReader(Path + @"\" + strFile, Encoding.Default))
{
string line;
while ((line = SR.ReadLine()) != null)
{
SW.WriteLine(line);
}
SR.Close();
}
SqlContext.Pipe.Send(strFile.ToString()); //打印已合并的SQL文件名
}
}
SW.WriteLine(@"/*============ " + strScriptNr + "====End (一共 " + intCount + " 個文件)===================================*/\nGo\n"); //記錄生成的合并腳本文件個數合并動作的結束位置
SW.Close();
SqlContext.Pipe.Send("\n\n【合成后文件】:\n--------------------------------------------\n" + NewFileName);
}
catch (System.Exception e)
{
SqlContext.Pipe.Send("\n在方法SQLScriptMerge內發生錯誤: \n\n" + e.ToString());
}
}
}

存儲過程代碼:
復制代碼 代碼如下:

Use master
GO
--啟動CLR
Exec sp_configure 'clr enable',1
Go
Reconfigure
GO
--先設置數據庫選項
Alter Database Master Set TRUSTWORTHY On
Go
--存儲過程
If object_id('sp_ScriptMerge2') Is Not Null
Drop Proc sp_ScriptMerge2
Go
If Exists(Select 1 From sys.assemblies Where Name=N'ScriptMerge')
Drop Assembly ScriptMerge
Go
Create Assembly ScriptMerge
From 'E:\Test\Objects\ISTest\ScriptMerge\ScriptMerge\bin\Debug\ScriptMerge.dll'
create proc sp_ScriptMerge2
(
@Path nvarchar(1024),
@FilesList nvarchar(max),
@NewFileName nvarchar(1024)
)
As External Name ScriptMerge.clScriptMerge.SQLScriptMerge
Go

以上的CLR存儲過程代碼是在SQL Server 2005 Microsoft Visual Studio 2005下運行通過。

標簽:本溪 鹽城 宜春 巴彥淖爾 通化 朔州 邢臺 遼源

巨人網絡通訊聲明:本文標題《合并SQL腳本文件的方法分享》,本文關鍵詞  合并,SQL,腳本,文件,的,方法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《合并SQL腳本文件的方法分享》相關的同類信息!
  • 本頁收集關于合并SQL腳本文件的方法分享的相關信息資訊供網民參考!
  • 推薦文章
    香蕉成人啪国产精品视频综合网| 国产麻豆精品久久一二三| 精品人妻一区二区三区免费看| 星空大象在线观看免费播放| 九色porny自拍视频| 美女又爽又黄免费| 美国黄色一级毛片| 一区二区三区久久久久| 青青操在线播放| 日韩三级av在线| 久久久久久久极品| 一二三区免费视频| 狠狠人妻久久久久久综合| 91杏吧porn蝌蚪| 国产午夜视频在线播放| aaa人片在线| 日韩一级在线视频| 中文字幕av影视| 欧洲av在线播放| 美女国产一区二区三区| 久久免费国产| 国产大片一区二区| 久久久一区二区| 亚洲男同1069视频| 在线观看免费亚洲| 日韩电视剧免费观看网站| 国产亚洲欧洲在线| 97欧美精品一区二区三区| 国产91亚洲精品| 国内精品一区二区| 椎名由奈jux491在线播放| 免费激情视频在线观看| www.免费av| 538任你躁在线精品视频网站| 国产性生活视频| 无码国产色欲xxxx视频| 高清国产午夜精品久久久久久| 久久免费精品国产久精品久久久久| 久久综合久久综合久久| 亚洲成人中文在线| 日韩午夜激情电影| 久久这里只有精品视频首页| 国产精选久久久久久| 天堂资源在线亚洲视频| 欧美成人黄色网址| 免费污网站在线观看| 久久精品五月天| 久久激情五月激情| 亚洲六月丁香色婷婷综合久久| 欧美成人在线直播| 亚洲性生活视频在线观看| 国产成人精品免费久久久久 | 一级黄色电影片| 夫妇露脸对白88av| 欧美一级片黄色| 国产精品乱子伦| 久久国产人妖系列| 亚洲精品老司机| 国产视频精品一区二区三区| 国产精品色视频| 黄色一级片在线看| 九一在线免费观看| 四虎在线视频免费观看| 99久精品国产| 亚洲男人天堂视频| 精品无码国模私拍视频| 免费a级黄色片| 夜夜躁狠狠躁日日躁av| 奇米色777欧美一区二区| 2023国产精品自拍| 亚洲国产精品综合小说图片区| 欧美成va人片在线观看| 欧美精品在线免费| 欧美日韩在线一区二区三区| 久久久久久久久久久久91| 午夜黄色福利视频| 黄色av网站免费在线观看| 99久久精品免费看| 在线观看中文字幕不卡| 精品国产一区二区三区四区在线观看 | 成人免费毛片高清视频| 欧洲国产伦久久久久久久| 欧美激情第99页| 亚洲开发第一视频在线播放| 久久福利小视频| 99免费在线视频| 国产精品区一区二区三| 亚洲国产精品字幕| 丁香婷婷久久久综合精品国产| 国产九九在线视频| 国产一级片毛片| 国产亚洲综合性久久久影院| 亚洲人成绝费网站色www| 91精品久久久久久久久久| 中文字幕第21页| 国产又粗又猛视频| 亚洲日本在线看| 欧美人在线视频| 免费在线激情视频| 一区二区小视频| 亚洲午夜精品在线| 日韩美女免费视频| 三上悠亚av一区二区三区| 一区二区自拍偷拍| 精品日韩视频在线观看| 国产欧美日韩免费看aⅴ视频| 制服丝袜av在线| 久久精品一区二区三区中文字幕| 亚洲最新视频在线观看| 午夜精品一区二区三区av| 一区二区xxx| 亚洲女人18毛片水真多| 91久久精品国产91性色tv| 国产精品视频中文字幕91| 欧美日韩怡红院| 艳妇乳肉豪妇荡乳av| 亚洲激情欧美激情| 日本韩国欧美精品大片卡二| 国产免费中文字幕| 香蕉视频911| 日韩欧美国产一区在线观看| 亚洲 日韩 国产第一区| 国产亚洲精品av| 椎名由奈av一区二区三区| 97视频在线播放| 久久综合在线观看| 蜜臀久久99精品久久久画质超高清| 欧美大胆人体bbbb| 国产精品无码免费专区午夜| 国产美女精品视频国产| 日韩欧美自拍偷拍| 欧美日韩在线精品| 久久久久久久久久久影院| 在线观看日韩精品| 精品一区二区三区日本| 亚洲 欧美 日韩 综合| 色综合久久久久综合体桃花网| 欧美亚洲一级二级| 国产一级做a爱免费视频| 精品久久久久久国产91| 日韩福利一区二区三区| 日本免费在线观看视频| 欧美日韩视频一区二区| 日韩欧美精品久久| 在线黄色av网站| 久久97超碰色| 欧美精品在线免费播放| 波多野结衣加勒比| 国产午夜精品久久| 成人欧美一区二区三区在线观看| 国产精品99精品无码视| 欧美在线视频不卡| 精品国产三级a∨在线| 内射后入在线观看一区| 中文字幕欧美亚洲| www.欧美com| 国产网红主播福利一区二区| 91免费欧美精品| www.久久久久久久| 日韩电影第一页| 黄色av网址在线观看| 午夜欧美大尺度福利影院在线看| 久久精品日韩精品| 人妻妺妺窝人体色www聚色窝| 亚洲无av在线中文字幕| 国产黄片一区二区三区| 欧美午夜激情在线| www.黄色网址.com| www.av导航| www国产亚洲精品久久网站| 日韩综合第一页| 国产欧美精品在线观看| 狠狠色伊人亚洲综合网站色| 亚洲av无码专区在线| 日韩一区二区福利| 一区二区三区四区免费| 在线免费一区三区| 日韩av片网站| 亚洲视频免费观看| 毛片av在线播放| 久久久精品国产免费观看同学| 久久久国产精品一区二区三区| 日本欧美在线观看| 国产精品美女主播在线观看纯欲| 国产一区二区三区在线观看| 久久国产天堂福利天堂| 欧美日韩中文视频| 中文字幕国产精品久久| 人妻少妇精品一区二区三区| 亚洲精品av在线播放| 在线观看国产免费视频| 色婷婷国产精品| 成人午夜视频免费在线观看| 久久久www成人免费无遮挡大片| 欧美一区二区三区电影在线观看| 久久综合亚州| 国产欧美一区二区三区久久 | 精品伦一区二区三区| 欧洲精品一区二区| 蜜臀aⅴ国产精品久久久国产老师| 欧美日韩国产专区| 国产成人精品一区二区三区在线观看| 在线观看欧美日本| 波多野结衣办公室双飞| 色综合久久综合网欧美综合网| 99精品视频免费版的特色功能| 欧美电影一区二区| 90岁老太婆乱淫| 91精品国产欧美一区二区18| 欧美 日本 国产| 欧美日韩1234| 在线观看免费视频国产| 日韩欧美国产电影| 黄色a级片在线观看| 播播国产欧美激情| 中日精品一色哟哟| 97热在线精品视频在线观看| 亚洲爱爱综合网| 国产一区二区三区色淫影院| 99在线精品观看| 日本人视频jizz页码69| 欧美日韩亚洲综合一区二区三区| 激情高潮到大叫狂喷水| 欧美老少做受xxxx高潮| 99精品免费观看| 成人免费观看a| 成人av电影在线观看| 成人中文字幕av| 91成人网在线| 国产a免费视频| 中文字幕亚洲一区| 怡红院成永久免费人全部视频| 国产精品久久久久福利| 日韩和欧美的一区| 永久免费在线看片视频| 亚洲成av人影院在线观看网| 深爱五月激情网| 一区二区欧美亚洲| 看片网址国产福利av中文字幕| 国产精品露脸自拍| 成人激情午夜影院| 亚洲综合av在线播放| 国产视频亚洲视频| 日韩国产精品久久| 欧美牲交a欧美牲交aⅴ免费真| 亚洲黄页网在线观看| 高清国产mv在线观看| 中文字幕一区二区三区精彩视频| 日韩欧美a级成人黄色| caoporn91| 国产精品自产拍在线观看| 国产喂奶挤奶一区二区三区| 美国黑人一级大黄| 国产日韩精品入口| 一区二区三区高清在线| 亚洲成人生活片| 国产精品18毛片一区二区| 欧美日韩激情美女| 91丝袜一区二区三区| 免费亚洲精品视频| 日本韩国欧美一区二区三区| 亚洲av人无码激艳猛片服务器| 久久久久国产精品视频| 在线视频欧美精品| www.热久久| av无码精品一区二区三区| 欧美乱人伦中文字幕在线| 国产盗摄女厕一区二区三区| 白白色免费视频| 91精品入口蜜桃| 欧美日韩国产区| 波多野结衣mp4| 欧洲美女和动交zoz0z| 亚洲精品综合久久中文字幕| 麻豆精品在线播放| 黄色在线免费播放| 97在线中文字幕| 欧美日韩激情在线| 欧美a一区二区| 人妻熟女aⅴ一区二区三区汇编| 国产精品久久久久久久久久小说| 国产精品国产三级国产aⅴ原创 | 精品成人av一区二区三区| 国产精华一区二区三区| 91精品国产麻豆国产自产在线 | 午夜精品免费在线| 精品美女www爽爽爽视频| 亚洲精品手机在线观看| 国产精品自产拍在线观| 欧美综合色免费| 久久91精品久久久久久秒播| 亚洲天堂av中文字幕| 亚洲日本精品一区| 日韩在线视频免费观看| 国产精品久久一级| 一二三区在线播放| 91网址在线观看精品| 国产免费一区二区三区| 精品视频—区二区三区免费| 91浏览器在线视频| 日韩三级小视频| 欧美三级一级片| 国产精品女主播视频| 精品久久五月天| 99久久精品国产毛片| 最近中文字幕在线免费观看 | 国产成人免费高清| 久久精品视频久久| 日本不卡一区二区在线观看| 91手机在线观看| 色噜噜狠狠色综合网图区| 亚洲免费看黄网站| 日韩和欧美一区二区三区| 九九热精彩视频| 精品免费国产一区二区| 国产精品国产精品| 久久精品视频在线观看| 欧洲激情一区二区| 97久久精品人人做人人爽| 天天综合久久综合| 在线观看一区二区三区视频| 杨幂一区欧美专区| 欧美一级淫片丝袜脚交| 欧美videofree性高清杂交| 自拍视频在线观看一区二区| 蜜臀久久99精品久久久画质超高清| 黄色片在线观看网站| 中文字幕天堂av| 免费看黄在线看| 国内精品久久国产| 久久久久久久久久婷婷| 精品国产一区二区三区四区四| 夜夜爽夜夜爽精品视频| av中文字幕亚洲| 久久久久国产精品午夜一区| 毛片视频网站在线观看| 国产xxxxxxxxx| 欧美日韩二三区| 亚洲成人在线视频网站| 91精品中文在线| 久久久久在线观看| 亚洲免费伊人电影在线观看av| 日本精品视频一区二区| 日本一二三不卡| 国内外成人在线视频| 亚洲欧美另类一区| 日韩免费av网站| 亚洲成人生活片| 人人妻人人藻人人爽欧美一区| 久热在线视频观看| 日韩精品一区在线视频| 日韩欧美亚洲日产国| 国产精品网站大全| 欧美高跟鞋交xxxxhd| 精品亚洲男同gayvideo网站| 欧美一区二区三区不卡| 色婷婷综合视频在线观看| 久久精品在线免费观看| 国产一区二区三区在线观看精品 | 伊人一区二区三区久久精品| 欧美一区二区成人| 色欧美片视频在线观看在线视频| 国产精品短视频| 国产欧美日韩三级| 中文字幕av一区二区三区高| 91丨九色丨蝌蚪富婆spa| 国产乱码精品1区2区3区| 日本欧洲一区二区| 日韩和的一区二区| 视频在线观看91| 天天操天天操天天| 亚洲免费黄色片| 亚洲精品久久久久avwww潮水| www.久久伊人| 亚洲精品国产精| 好吊色一区二区| 人妻少妇精品无码专区| 性高潮久久久久久久久久| 97人妻精品一区二区三区视频| 亚洲一级片免费看| 国产欧美一级片| 午夜精品久久久久久久爽 | 在线视频中文亚洲| 久久国产视频网站| 午夜精品一区二区三区在线视频| 欧美在线观看一区二区三区| 国产不卡一区二区在线播放| 欧美最近摘花xxxx摘花| 国产精品成人在线| 91精品久久久久久蜜桃| 久久av免费观看| www国产免费| 天堂网在线免费观看| 日本中文字幕精品| 一本色道综合久久欧美日韩精品| 日韩精品无码一区二区三区久久久| 国产美女永久免费无遮挡| 久艹在线观看视频| 无码人妻黑人中文字幕| 国产剧情久久久| 天堂网在线资源| 国产麻豆91精品| 国产欧美精品一区| 岛国av一区二区| 日韩欧美一二三四区| 中文亚洲视频在线| 日本久久精品视频| 麻豆av福利av久久av| 97干在线视频| 熟妇人妻久久中文字幕|