『開源』Slithice 2013 服務器集羣 設計和源碼

相關介紹文章:

『設計』Slithice 分佈式架構設計-支持一體式開發,分佈式發佈

『集羣』001 Slithice 服務器集羣 概述

『集羣』002 Slithice 集羣配置工具 的使用

『集羣』003 Slithice 最簡分佈式(多個客戶端,一個獨立服務端)

『集羣』004 Slithice 集羣分佈式(多個客戶端,基於中央服務器的多個集羣服務端)

『集羣』005 Slithice 基於 集羣 的 自動容錯

『集羣』006 Slithice 後期改進 和 Slithice可能存在的BUG

『集羣』007 如何測試Slithice源代碼

 

 版本庫:

 

Slithice是做什麼的

Slithice 是一個 跨平臺 的 分佈式架構 框架;

旨在簡化 分佈式開發 的開發難度,節省 開發成本 和 後期維護成本;

並提供 穩定 的分佈式容錯機制;

其 界面化的集羣配置,一體式開發&分佈式發佈,插件覆蓋,容錯調度 是 Slithice 最大的亮點;

Slithice 提供 任意 程序集,任意命名空間,任意類名 的 擴展,包括:

配置數據獲取方式的擴展(從 什麼地方 找尋 服務器配置數據);

調度方式的擴展(比如WCFSocketWebService等);

功能插件的擴展(這個就是 最重要的了);

Ps. Slithice 並非 只 針對 集羣服務器,同時 Slithice 也支持 最簡單的 一個服務端&多個客戶端 的 最簡分佈式;

 

Slithice名字的由來

Slithice  DotA 故事中,娜迦海妖 的名字 —— 只是因爲 半年前 練習 小娜迦,所以 才 選取了這個名字;

 

Slithice的版本演化

之前時間,Slithice 的 架構設想 閃現於腦海,於是 整理了最簡單的 設計手稿 和 實現目標

2013-02-10    Project版本庫    正式動工     取名 Slithice 2013     累計耗時20小時,完成 先行版 Demo

2013-06-10    Laura版本庫      項目遷移     維持原名                  累計耗時60小時,完成 現在版本;

 

Slithice的目標

Slithice 的 基本目標 就是 簡化 集羣分佈式 開發;

Slithice 的 終極目標 就是 跨平臺:

服務端 可以用 .NetJava 等開發;

客戶端 可以用 .Net-PC.Net-WinCE.Net-WinPhoneJavaAndroidIPhone 等開發;

—— 想必,這是 極好的;

 

順帶提一下 Slithice 的序列化

Slithice 支持 .Net 自帶的序列化(不能跨WinCE等平臺) 和 Laura.Serialization 序列化 —— 沒有使用架構;

Laura.Serialization 是 作者順手 累計 30小時 完成的 一個 序列化算法;

       Laura.Serialization 支持 .Net-PC.Net-WinCE 兩個平臺;

       Laura.Serialization 序列化的 byte[] 結構分爲:類型區,數據區,結構區

       Laura.Serialization 設計思想,只要對 類型區 進行控制:基本就能實現 跨 JavaAndroid 等 其他平臺;

       Laura.Serialization 作者順手 5小時,寫了一個 Json 序列化算法(用 字符串 跨平臺 顯得容易很多)

 

Slithice集羣配置工具 主界面

在測試 Slithice  Demo 中,我配置了 7個服務端:

一個 WCF 的 中央服務端;

兩個 WCF 的 成員服務端(私有 – 前面有一個棕色皮包的圖標);

兩個 Socket 的 成員服務端;

兩個 WebService 的 成員服務端;

 

Slithice集羣配置工具 配置界面

配置界面.jpg

我們看到的是 WebService_002 的 配置

>藍色區域 裏面的 是 當前服務端 自己可以處理的 Action

       >紅色區域 裏面的 是 當前服務端 自己不能處理,但是 可以 調度出去的 Action

       >紫色區域 裏面的 是 當前服務器 可以調度 的 子服務器(就是 兩個 WCF 服務);

       >按照 Slithice 的設計思想:能夠自己處理的任務,除了強制指定任務的服務器外,基本都會自己處理,自己處理不了的,纔會進行調度;

 

上面 展示的 是 WebService_002 可以調度 出去的 Action

>TestAction_001TestAction_002 兩個 子服務器 都可以 調度;

>TestAction_1_001TestAction_1_002 只有 ConsoleWCFService_001 可以調度;

>這裏,做了一個 BUG配置:我們將 Slithice_ResetService(重置服務器) 的功能 沒有 勾選爲自己處理,結果 重置服務器 的功能 也將會 被調度;(Slithice 內置的 Action插件 並沒有 特權)

       >調度機率:在配置 服務端 時候,可以按照 服務端 所在的 硬件設備 的處理能力 設置 這個值,默認 100000;當 對一個 服務端的 調度 出現錯誤時,該值 會 -1,調度成功時,該值 會 +1 —— 調度機率,決定了 同一個任務可以多個調度 時的 調度機率;

 

Slithice集羣配置工具 插件覆蓋界面

上面 展示的 是 插件覆蓋界面;

>ConsoleCenterService 具有 幾個 自定義Action

>其中,TestAction_Center_001 有兩個版本, 他們是 同鍵值的,但是 最終被啓用 的是優先級 更高的 100010

>插件 優先級 的設置,爲了 避免問題,可以 使用 yyMMddHH 這種模式;

>Slithice 內置 Action 是沒有特權的:Slithice內置Action 也是可以被覆蓋的 —— 當然,還是有 多少 的 特殊處理:

Slithice 內置 Action 優先級 最大值可以是 Int64.MaxValue

              自定義 Action 優先級 最大值可以是 Int32.MaxValue

 

Slithice集羣配置工具 單元測試界面

上面 展示的 是 單元測試界面;

       >因爲 時間比較急,所以 插件執行時需要的參數 這個功能 並沒有實現;

       >因爲 時間比較急,所以 插件測試的是 服務端本地固有Action 的 測試,並不包括 服務端 可調度 的 Action 測試;

       >因爲 時間比較急,所以 性能壓力 測試 的功能 並沒有實現;


Slithice 是開源的

Slithice 的 作者 是 舒小龍;

Slithice 是開源的,任何 企業 或 個人 都可以 無償 用於 商業 或 非商業 用途;

當然,作者希望 各位 能在 舒小龍 的 個人博客 或者 博客園 回覆一哈:使用者名稱+軟件名稱+郵箱(可選)

爲什麼要開源:

北京公司,在 抽菸室 和 馬瑞禮(馬哥) 聊天中,就聊到了這個話題,當時 馬哥的回答 讓自己 有所頓悟:

今天自己的代碼 比起 幾年前 成長了不少,當初的 王牌代碼 在今天也 不過如此

—— 未來幾年後,今天的代碼 或許 在未來 也只是 “不過如此”;

所在的 角度 和 高度 在 提升,思想也就不一樣 吧;

 

最最重要的是:王牌代碼 給不了 一個人 未來,能成就一個人未來的 是 合作共贏 的力量;

Ps. 感謝那段時間 馬哥 那次關於“開源”的討論,也感謝那段時間 馬哥 在人生 道路上 對我的 各種指點,還有那次的寬容,收益很深;

 

源碼下載

Slithice 2013 所有源碼和文檔

 

                                                                                                               舒小龍

                                                                                                       2014-03-13 01:34


 
Ps.爲了 數據庫附加 版本不同,所以 提供 數據表 結構和數據 腳本
USE [LauraBlog]
GO
/****** Object:  Table [dbo].[SL_TransferServiceConfig]    Script Date: 03/19/2014 20:57:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[SL_TransferServiceConfig](
    [FId] [int] IDENTITY(1,1) NOT NULL,
    [FPrevServiceName] [nvarchar](250) NOT NULL,
    [FServiceName] [nvarchar](250) NOT NULL,
    [FTransferType] [nvarchar](150) NOT NULL,
    [FTransferArguments] [ntext] NOT NULL,
    [FTransferProbability] [int] NOT NULL,
    [FHandleModules] [ntext] NOT NULL,
 CONSTRAINT [PK_SL_TransferServiceConfig] PRIMARY KEY CLUSTERED 
(
    [FId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO
SET IDENTITY_INSERT [dbo].[SL_TransferServiceConfig] ON
INSERT [dbo].[SL_TransferServiceConfig] ([FId], [FPrevServiceName], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules]) VALUES (64, N'WebService_001', N'ConsoleWCFService_001', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:40000/SlithiceService/CalculateWinService;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_001|TestAction_002|TestAction_1_001|TestAction_1_002')
INSERT [dbo].[SL_TransferServiceConfig] ([FId], [FPrevServiceName], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules]) VALUES (65, N'WebService_002', N'ConsoleWCFService_001', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:40000/SlithiceService/CalculateWinService;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_001|TestAction_002|TestAction_1_001|TestAction_1_002')
INSERT [dbo].[SL_TransferServiceConfig] ([FId], [FPrevServiceName], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules]) VALUES (66, N'WebService_002', N'ConsoleWCFService_002', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:50000/SlithiceService/CalculateWinService;TransferType=NetWcfBinary;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_001|TestAction_002|TestAction_2_001|TestAction_2_002')
SET IDENTITY_INSERT [dbo].[SL_TransferServiceConfig] OFF
/****** Object:  Table [dbo].[SL_SlithiceServiceConfig]    Script Date: 03/19/2014 20:57:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[SL_SlithiceServiceConfig](
    [FId] [int] IDENTITY(1,1) NOT NULL,
    [FServiceName] [nvarchar](250) NOT NULL,
    [FTransferType] [nvarchar](150) NOT NULL,
    [FTransferArguments] [ntext] NOT NULL,
    [FTransferProbability] [int] NOT NULL,
    [FHandleModules] [ntext] NOT NULL,
    [FTransferModules] [ntext] NOT NULL,
    [FIsPrivate] [bit] NOT NULL,
    [FEnable] [bit] NOT NULL,
 CONSTRAINT [PK_SL_SlithiceServiceConfig] PRIMARY KEY CLUSTERED 
(
    [FId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO
SET IDENTITY_INSERT [dbo].[SL_SlithiceServiceConfig] ON
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (133, N'ConsoleCenterService', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:30000/SlithiceService/CalculateWinService;TransferType=NetWcfBinary;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_Center_001|TestAction_Center_002', N'', 0, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (134, N'ConsoleSocketService_001', N'NetSocket', N'ServiceAddress=127.0.0.1;ServicePort=31000;TransferType=NetSocket;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState', N'', 0, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (135, N'ConsoleSocketService_002', N'NetSocket', N'ServiceAddress=127.0.0.1;ServicePort=32000;TransferType=NetSocket;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState', N'', 0, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (136, N'ConsoleWCFService_001', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:40000/SlithiceService/CalculateWinService;TransferType=NetWcfBinary;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_001|TestAction_002|TestAction_1_001|TestAction_1_002', N'', 1, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (137, N'ConsoleWCFService_002', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:50000/SlithiceService/CalculateWinService;TransferType=NetWcfBinary;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_001|TestAction_002|TestAction_2_001|TestAction_2_002', N'', 1, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (139, N'WebService_001', N'NetWebService', N'WebServiceUrl=http://localhost:5447/SlithiceWebService.asmx;TransferType=NetWebService;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState', N'TestAction_001|TestAction_002|TestAction_1_001|TestAction_1_002', 0, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (140, N'WebService_002', N'NetWebService', N'WebServiceUrl=http://localhost:5451/SlithiceWebService.asmx;TransferType=NetWebService;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ServiceState|Slithice_ValueState', N'Slithice_ResetService|TestAction_001|TestAction_002|TestAction_1_001|TestAction_1_002|TestAction_2_001|TestAction_2_002', 0, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (141, N'WebCenterService', N'NetWebService', N'WebServiceUrl=http://localhost:9183/SlithiceWebService.asmx;TransferType=NetWebService;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_Center_003', N'', 0, 1)
SET IDENTITY_INSERT [dbo].[SL_SlithiceServiceConfig] OFF
/****** Object:  Default [DF_SL_SlithiceServiceConfig_FServiceName]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FServiceName]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FServiceName]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD  CONSTRAINT [DF_SL_SlithiceServiceConfig_FServiceName]  DEFAULT ('') FOR [FServiceName]
END


End
GO
/****** Object:  Default [DF_SL_SlithiceServiceConfig_FTransferType]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FTransferType]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FTransferType]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD  CONSTRAINT [DF_SL_SlithiceServiceConfig_FTransferType]  DEFAULT ('') FOR [FTransferType]
END


End
GO
/****** Object:  Default [DF_SL_SlithiceServiceConfig_FTransferArguments]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FTransferArguments]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FTransferArguments]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD  CONSTRAINT [DF_SL_SlithiceServiceConfig_FTransferArguments]  DEFAULT ('') FOR [FTransferArguments]
END


End
GO
/****** Object:  Default [DF_SL_SlithiceServiceConfig_FTransferProbability]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FTransferProbability]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FTransferProbability]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD  CONSTRAINT [DF_SL_SlithiceServiceConfig_FTransferProbability]  DEFAULT ((100000)) FOR [FTransferProbability]
END


End
GO
/****** Object:  Default [DF_SL_SlithiceServiceConfig_FHandleModules]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FHandleModules]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FHandleModules]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD  CONSTRAINT [DF_SL_SlithiceServiceConfig_FHandleModules]  DEFAULT ('') FOR [FHandleModules]
END


End
GO
/****** Object:  Default [DF_SL_SlithiceServiceConfig_FTransferModules]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FTransferModules]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FTransferModules]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD  CONSTRAINT [DF_SL_SlithiceServiceConfig_FTransferModules]  DEFAULT ('') FOR [FTransferModules]
END


End
GO
/****** Object:  Default [DF_SL_SlithiceServiceConfig_FIsPrivate]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FIsPrivate]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FIsPrivate]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD  CONSTRAINT [DF_SL_SlithiceServiceConfig_FIsPrivate]  DEFAULT ((0)) FOR [FIsPrivate]
END


End
GO
/****** Object:  Default [DF_SL_SlithiceServiceConfig_FEnable]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FEnable]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FEnable]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD  CONSTRAINT [DF_SL_SlithiceServiceConfig_FEnable]  DEFAULT ((1)) FOR [FEnable]
END


End
GO
/****** Object:  Default [DF_SL_TransferServiceConfig_FPrevServiceName]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FPrevServiceName]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FPrevServiceName]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD  CONSTRAINT [DF_SL_TransferServiceConfig_FPrevServiceName]  DEFAULT ('') FOR [FPrevServiceName]
END


End
GO
/****** Object:  Default [DF_SL_TransferServiceConfig_FServiceName]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FServiceName]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FServiceName]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD  CONSTRAINT [DF_SL_TransferServiceConfig_FServiceName]  DEFAULT ('') FOR [FServiceName]
END


End
GO
/****** Object:  Default [DF_SL_TransferServiceConfig_FHandleType]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FHandleType]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FHandleType]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD  CONSTRAINT [DF_SL_TransferServiceConfig_FHandleType]  DEFAULT ('') FOR [FTransferType]
END


End
GO
/****** Object:  Default [DF_SL_TransferServiceConfig_FArguments]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FArguments]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FArguments]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD  CONSTRAINT [DF_SL_TransferServiceConfig_FArguments]  DEFAULT ('') FOR [FTransferArguments]
END


End
GO
/****** Object:  Default [DF_SL_TransferServiceConfig_FTransferProbability]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FTransferProbability]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FTransferProbability]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD  CONSTRAINT [DF_SL_TransferServiceConfig_FTransferProbability]  DEFAULT ((100000)) FOR [FTransferProbability]
END


End
GO
/****** Object:  Default [DF_SL_TransferServiceConfig_FHandleModules]    Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FHandleModules]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FHandleModules]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD  CONSTRAINT [DF_SL_TransferServiceConfig_FHandleModules]  DEFAULT ('') FOR [FHandleModules]
END


End
GO
View Code

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章