电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

在SQL Server 中使用SQLDMO

瀏覽:146日期:2023-10-29 12:39:35

曾幾何時,伙伴們為數據庫的升級傷透了腦筋.往往程序的升級趕不上數據庫的升級(版本控制的好,這也許不是什么問題,但對于很大一部分中國公司來說這是無法避免的).而有些n久以前的數據庫要使用新程序的時候,數據庫的升級簡直就是無從下手.所以對比數據庫升級的緊要性就逐漸的凸現出來.對于表和字段的升級按道理來說是不難的,通過sysobjects與syscolumns的比較很容易的可以找到不同之處,然后增加沒有的對象即可.而對于視圖和存儲過程等非表對象的更新就有些為難了(當然視圖和存儲過程如果用手工的辦法是很簡單的).一個在于如何生成對象腳本,另一個在于如何執行.大家都知道syscomments表中藏有此類對象的腳本,人們肯定會優先考慮開采這個寶庫.當站在字符型變量最大只能存儲8000個字符時,這簡直就是一個不可逾越的障礙.人們又想從導出文本腳本然后執行這個思路著手時,又發現從字段中取出的腳本有個天然的缺陷:換行問題.(最后發現,這個問題也是可以解決的).萬般無奈下人們把渴望的目光集中到了SQLDMO上,她的身上總散發著無所不能的光芒.

當Transfer對象的美妙身材展現在人們眼前的時候,大家都對她的美麗所折服——這不正是我們所尋找的嗎?她的動人之處就在于可以把一個數據庫的對象腳本保存在內存中,然后連接到另一個數據庫上執行.太棒了!現在我們來看看她的輪廓吧:

重要屬性:

CopyAllDefaults Boolean;;所有默認值

CopyAllObjects; Boolean;;所有對象

CopyAllRules;;Boolean;;所有規則

CopyAllStoredProceduresBoolean;所有存儲過程

CopyAllTables;Boolean;;所有表

CopyAllTriggers Boolean;;所有觸發器

CopyAllUserDefinedDatatypes;;;Boolean;;;;所有用戶自定義類型

CopyAllViews;;Boolean;;所有視圖

CopyDataBoolean;;所有數據

DestDatabase;String;;;;目標對象數據庫

DestLogin; String;;;;目標數據庫登陸用戶名

DestPassword;;String;;;;目標數據庫登陸密碼

DestServer String;;;;目標服務器

DestUseTrustedConnection; Boolean; 用戶信任連接

DropDestObjectsFirst; Boolean;;是否先刪除目標對象

IncludeDependenciesBoolean;;是否包含依靠對象

ScriptType; Boolean;;腳本類型

重要方法:

AddObject增加對象

AddObjectByName;通過對象名稱增加對象

好了,大家應該對這個對象略有些了解了.對SQLDMO熟悉的人也許一下子就可以從中得到靈感,而初學者在這里恐怕還是一頭霧水.不過不用著急,具體用法我們會慢慢道來:

CREATE PROCEDURE; P_UDB --以源數據庫為模板升級目標數據庫

(; @Source_DB; sysname;;--原數據庫

,@Des_DB;;sysname;;--目標數據庫

,@UserNamesysname;;--用戶名

,@psw;;;;;sysname;;--密碼

)

AS

set nocount on

--/*; 局部變量聲明

declare; @ObjName;;;sysname

,@SrvID;int;;--服務器ID

,@DBsId;int;;--數據庫集ID

,@transferID;;;int;;--傳輸ID

,@SDBId;int;;--源數據庫ID

,@DDBID;int;;--目標數據庫ID

,@SViewListID;;int;;--源數據庫視圖列表;

,@DViewListID;;int;;--目標數據庫視圖列表;

,@str;;;Nvarhar(4000)

,@name;;sysname

,@hr;;;;int;--執行語句返回值

,@Errorint;;;;--錯誤返回值(999:存儲過程或觸發器錯誤;9999:視圖錯誤)

--*/;;

--/*創建sqldmo對象; 前面我們已經說過SQLDMO是個com,在SQL Server中使用OLE --自動化對象需要用到sp_OACreate等一系列的存儲過程,讀者如果有不明白的可以自--己查閱相關資料

exec @hr=sp_oacreate 'SQLDMO.sqlserver',@SrvID output

if @hr<>0

begin

set @Error=1

goto PEnd

end

--*/

--/*連接服務器

exec @hr=sp_oamethod @SrvID,'connect',null,@@ServerName,@UserName,@psw

if @hr<>0

begin

set @Error=2

goto PEnd

end

--*/

--/*取數據庫集

exec @hr=sp_oagetproperty @SrvID,'databases',@DBsId output

--*/

--/*選擇源數據庫;

exec @hr=sp_oamethod @DBsId,'item',@SDBId output,@Source_DB

if @hr<>0

begin

set @Error=3

goto PEnd

end

--*/

--/*選擇目標數據庫;

exec @hr=sp_oamethod @DBsId,'item',@DDBId output,@Des_DB

if @hr<>0

begin

set @Error=4

goto PEnd

end

--*/

/*Tansfer屬性設置(生成三大對象)

exec @hr=sp_oacreate 'SQLDMO.Transfer',@transferID output

exec @hr=sp_oasetproperty@transferID,'DestServer',@@ServerName

exec @hr=sp_oasetproperty@transferID,'DestLogin',@UserName

exec @hr=sp_oasetproperty@transferID,'DestPassword ',@psw

exec @hr=sp_oasetproperty@transferID,'DestDatabase',@des_DB

exec @hr=sp_oasetproperty@transferID,'DropDestObjectsFirst ',1

exec @hr=sp_oasetproperty@transferID,'CopyAllStoredProcedures ',1

exec @hr=sp_oasetproperty@transferID,'CopyAllTriggers',1

exec @hr=sp_oasetproperty@transferID,'CopyAllViews',1

--exec @hr=sp_oasetproperty@transferID,'ScriptType ',1 這里大家可以試試這個屬性

exec @hr=sp_oamethod; @DDBId,'Transfer ',null,@transferID

exec sp_OADestroy @TransferID;

if @hr<>0

begin

set @Error=10

goto PEnd

end

*/

PEnd:

exec @hr = sp_OAMethod @SrvID, 'DisConnect';

exec sp_OADestroy @SrvID;

print (@Error)

Return (@Error)

GO

上邊的存儲過程只要是介紹方法的實現,而具體的功能比如表及字段的比較生成這里就省略了.

其實有一個大家最后也沒能解決好的問題就是對象依賴的問題.許多對象比如視圖里嵌視圖,這時生成與執行需要有順序的.雖然有算法但有缺陷.希望讀者能可以提供好的算法.

標簽: Sql Server 數據庫
主站蜘蛛池模板: 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 常州翔天实验仪器厂-恒温振荡器-台式恒温振荡器-微量血液离心机 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 粉末冶金注射成型厂家|MIM厂家|粉末冶金齿轮|MIM零件-深圳市新泰兴精密科技 | 棕刚玉_白刚玉_铝酸钙-锐石新材料 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 安徽泰科检测科技有限公司【官方网站】 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 圆盘鞋底注塑机_连帮鞋底成型注塑机-温州天钢机械有限公司 | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | 微波萃取合成仪-电热消解器价格-北京安合美诚科学仪器有限公司 | 上海佳武自动化科技有限公司| 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 壹车网 | 第一时间提供新车_资讯_报价_图片_排行! | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | VI设计-LOGO设计公司-品牌设计公司-包装设计公司-导视设计-杭州易象设计 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 烟台条码打印机_烟台条码扫描器_烟台碳带_烟台数据采集终端_烟台斑马打印机-金鹏电子-金鹏电子 | 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 奥运星-汽车性能网评-提供个性化汽车资讯 | 国资灵活用工平台_全国灵活用工平台前十名-灵活用工结算小帮手 | 逗网红-抖音网红-快手网红-各大平台网红物品导航 | 免费B2B信息推广发布平台 - 推发网 | 船老大板材_浙江船老大全屋定制_船老大官网 | 铁盒_铁罐_马口铁盒_马口铁罐_铁盒生产厂家-广州博新制罐 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 拉卡拉POS机官网 - 官方直营POS机办理|在线免费领取 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | HYDAC过滤器,HYDAC滤芯,现货ATOS油泵,ATOS比例阀-东莞市广联自动化科技有限公司 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 | 健康管理师报考条件,考试时间,报名入口—首页 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 |