冷月葬花魂 发表于 2015-1-16 22:39:13

MSSQL网页设计革新SP到一数据库便利制造XSD文件

修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。数据|数据库|革新
----------------------------------------------------------------------------------
--革新SP到数据库--
----
--&Old&来历数据库名--
--&New&方针数据库名--
----
--方针数据库中表名为来历数据库中的用户自界说SP、FN等(可按提醒增加--具体提醒今后加)--
--表中的列名则为其参数--
----
--黄宗银--
--2005.01.19--
----------------------------------------------------------------------------------
ALTERPROCEDUREdbo.P_Ref
AS
DECLARE@SQLnvarchar(4000)

--不存在数据库则创立
IFNOTEXISTS(
SELECT
FROMmaster.dbo.sysdatabases
WHERE=&New&
)
BEGIN
CREATEDATABASE&New&
END

--掏出SP、FN、TF其name、id
DECLARE@TblCURSOR
SET@Tbl=CURSORLOCALSCROLLFOR
SELECT,
FROM&Old&.dbo.sysobjects
--要增添革新范例请修正这里
WHERE(LIKEP%ORLIKEF%ORLIKETF%)
AND(type=PORtype=FNORtype=TF)

DECLARE@TblNamenvarchar(100)
DECLARE@TblIDint

--以@TblName为名创立表
OPEN@Tbl
FETCHNEXTFROM@TblINTO@TblName,@TblID
WHILE(@@FETCH_STATUS=0)
BEGIN
--已存在该表则删除
IFEXISTS
(
SELECTFROM&New&.dbo.sysobjects
WHERE=@TblName
ANDtype=U
)
BEGIN
SET@SQL=DROPTABLE+&New&+.dbo.+@TblName
EXECSP_ExecuteSQL@SQL
IF(@@ERROR0)
BEGIN
RAISERROR(删除已存在的表%s失利!,11,1,@TblName)
RETURN
END
END

--假如没有参数则跳过
IF((SELECTCount(*)FROMdbo.syscolumnsWHERELIKE@%AND=@TblID)=0)
BEGIN
FETCHNEXTFROM@TblINTO@TblName,@TblID
CONTINUE
END

--掏出列名及其范例
DECLARE@ColCURSOR
SET@Col=CURSORLOCALSCROLLFOR
SELECT&Old&.dbo.syscolumns.,&Old&.dbo.systypes.
FROM&Old&.dbo.syscolumnsLEFTOUTERJOIN
&Old&.dbo.systypesON&Old&.dbo.syscolumns.xtype=&Old&.dbo.systypes.xtype
WHERE&Old&.dbo.syscolumns.LIKE@%
AND&Old&.dbo.syscolumns.=@TblID
ORDERBY&Old&.dbo.syscolumns.colorder

DECLARE@ColNamenvarchar(50)
DECLARE@ColTypenvarchar(20)

--机关SQL语句
SET@SQL=CREATETABLE&New&.dbo.+@TblName+(
OPEN@Col
FETCHNEXTFROM@ColINTO@ColName,@ColType
DECLARE@ColNameLastnvarchar(50)
SET@ColNameLast=
WHILE(@@FETCH_STATUS=0)
BEGIN
SET@ColName=SubString(@ColName,2,Len(@ColName)-1)
--跳太重复的列
IF(@ColName@ColNameLast)
BEGIN
SET@SQL=@SQL+@ColName++@ColType+,
SET@ColNameLast=@ColName
END
FETCHNEXTFROM@ColINTO@ColName,@ColType
END
SET@SQL=SubString(@SQL,1,Len(@SQL)-1)
SET@SQL=@SQL+)

--实行SQL语句
EXECSP_ExecuteSQL@SQL
IF(@@ERROR0)
BEGIN
RAISERROR(创立表%s失利!,11,1,@TblName)
RETURN
END

--创立下一个表
FETCHNEXTFROM@TblINTO@TblName,@TblID
END

RETURN@@ERROR
提供TCP/IP、ODBC和JDBC等多种数据库连接路径。

冷月葬花魂 发表于 2015-1-19 20:37:07

代替了原来VB式的错误判断。比Oracle高级不少。

灵魂腐蚀 发表于 2015-1-25 21:30:05

外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。

山那边是海 发表于 2015-2-4 02:43:50

一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)

海妖 发表于 2015-2-9 11:47:53

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

只想知道 发表于 2015-2-27 05:50:11

如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。

乐观 发表于 2015-3-8 22:41:30

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

变相怪杰 发表于 2015-3-16 16:29:34

入门没那么困难,精通没那么容易

小女巫 发表于 2015-3-22 23:41:42

从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
页: [1]
查看完整版本: MSSQL网页设计革新SP到一数据库便利制造XSD文件