相關介紹文章:
《『設計』Slithice 分佈式架構設計-支持一體式開發,分佈式發佈》
《『集羣』003 Slithice 最簡分佈式(多個客戶端,一個獨立服務端)》
《『集羣』004 Slithice 集羣分佈式(多個客戶端,基於中央服務器的多個集羣服務端)》
《『集羣』005 Slithice 基於 集羣 的 自動容錯》
《『集羣』006 Slithice 後期改進 和 Slithice可能存在的BUG》
版本庫:
Slithice是做什麼的
Slithice 是一個 跨平臺 的 分佈式架構 框架;
旨在簡化 分佈式開發 的開發難度,節省 開發成本 和 後期維護成本;
並提供 穩定 的分佈式容錯機制;
其 界面化的集羣配置,一體式開發&分佈式發佈,插件覆蓋,容錯調度 是 Slithice 最大的亮點;
Slithice 提供 任意 程序集,任意命名空間,任意類名 的 擴展,包括:
配置數據獲取方式的擴展(從 什麼地方 找尋 服務器配置數據);
調度方式的擴展(比如WCF,Socket,WebService等);
功能插件的擴展(這個就是 最重要的了);
Ps. Slithice 並非 只 針對 集羣服務器,同時 Slithice 也支持 最簡單的 一個服務端&多個客戶端 的 最簡分佈式;
Slithice名字的由來
Slithice 是 DotA 故事中,娜迦海妖 的名字 —— 只是因爲 半年前 練習 小娜迦,所以 才 選取了這個名字;
Slithice的版本演化
之前時間,Slithice 的 架構設想 閃現於腦海,於是 整理了最簡單的 設計手稿 和 實現目標
2013-02-10 Project版本庫 正式動工 取名 Slithice 2013 累計耗時20小時,完成 先行版 Demo;
2013-06-10 Laura版本庫 項目遷移 維持原名 累計耗時60小時,完成 現在版本;
Slithice的目標
Slithice 的 基本目標 就是 簡化 集羣分佈式 開發;
Slithice 的 終極目標 就是 跨平臺:
服務端 可以用 .Net、Java 等開發;
客戶端 可以用 .Net-PC、.Net-WinCE、.Net-WinPhone、Java、Android、IPhone 等開發;
—— 想必,這是 極好的;
順帶提一下 Slithice 的序列化
Slithice 支持 .Net 自帶的序列化(不能跨WinCE等平臺) 和 Laura.Serialization 序列化 —— 沒有使用架構;
Laura.Serialization 是 作者順手 累計 30小時 完成的 一個 序列化算法;
Laura.Serialization 支持 .Net-PC、.Net-WinCE 兩個平臺;
Laura.Serialization 序列化的 byte[] 結構分爲:類型區,數據區,結構區
Laura.Serialization 設計思想,只要對 類型區 進行控制:基本就能實現 跨 Java,Android 等 其他平臺;
Laura.Serialization 作者順手 5小時,寫了一個 Json 序列化算法(用 字符串 跨平臺 顯得容易很多)
Slithice集羣配置工具 主界面
在測試 Slithice 的 Demo 中,我配置了 7個服務端:
一個 WCF 的 中央服務端;
兩個 WCF 的 成員服務端(私有 – 前面有一個棕色皮包的圖標);
兩個 Socket 的 成員服務端;
兩個 WebService 的 成員服務端;
Slithice集羣配置工具 配置界面
我們看到的是 WebService_002 的 配置
>藍色區域 裏面的 是 當前服務端 自己可以處理的 Action;
>紅色區域 裏面的 是 當前服務端 自己不能處理,但是 可以 調度出去的 Action;
>紫色區域 裏面的 是 當前服務器 可以調度 的 子服務器(就是 兩個 WCF 服務);
>按照 Slithice 的設計思想:能夠自己處理的任務,除了強制指定任務的服務器外,基本都會自己處理,自己處理不了的,纔會進行調度;
上面 展示的 是 WebService_002 可以調度 出去的 Action;
>TestAction_001、TestAction_002 兩個 子服務器 都可以 調度;
>TestAction_1_001、TestAction_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
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