-
将mater库中的系统存储过程批量生成*.sql文件通用且非常实用
大家都知道系统存储过程是无法用工具导出的(大家可以试试>任务>生成SQL脚本)因为系统存储过程一般是不让开发人员修改的。需要知识:1、xp_cmdshell命令的使用2、sp_MS_marksystemobject标记系统存储过程的方法3、dos命令,如type,>>等4、bcp命令的使用复制代码代码如下:usemastergoifOBJECT_ID('pr_procToSql')isnotnulldropprocpr_procToSqlgocreateprocpr_procToSql(@服务器名varchar(100),@用户名varchar(100),@密码varchar(100),@pathvarchar(200),@databasevarchar(200),@sysprocint='0'--是否标记为系统函数1:是,0:否,@proc_namevarchar(100)=''--默认是所有,可以模糊搜索,@savetypevarchar(200)='.sql'--默认保存为sql脚本)as/*版本:v1作者:达摩日期:2012-04-13功能:1将mast...
数据库操作教程 2022-09-23 17:13:58 -
如何将sql执行的错误消息记录到本地文件中实现过程
其实大家都知道sql语句的错误信息都可以在sys.messages表里面找到如:如果在执行语句在try...catch中我们可以通过以下方法获取错误信息。sql语句如下:复制代码代码如下:BEGINTRYSELECT3/0ENDTRYBEGINCATCHDECLARE@errornumberINTDECLARE@errorseverityINTDECLARE@errorstateINTDECLARE@errormessageNVARCHAR(4000)SELECT@errornumber=ERROR_NUMBER(),@errorseverity=ERROR_SEVERITY(),@errorstate=ERROR_STATE(),@errormessage=ERROR_MESSAGE()SELECT@errornumber,@errorseverity,@errorstate,@errormessageRAISERROR(@errormessage,--Messagetext,@errorseverity,--Severity,@errorstate,--State,@errornu...
数据库操作教程 2022-09-23 17:13:40 -
将Reportingservices的RDL文件拷贝到另外一台机器时报Dataattherootlevelisinvalid的解决方法
如下图所示:单击EditCode打开Code信息如下:经查Dataattherootlevelisinvalid是XML文件的错误信息。从上图可以看出在</Report>的根元素结束符后又多了许多脚本...
数据库操作教程 2022-09-23 17:10:04 -
SQL2000中的默认sa帐号的修改与删除方法
现在用MSSQL的地方太多了,有很多做技术的个人电脑上也安装SQL专业版,因为它用的多,但用的人都知道,SQL有个超级用户sa,此用户默认情况下,它指派给固定服务器角色sysadmin,并不能进行更改。一般懂点安全问题的技术人员都会把这个密码修改掉,但修改再复杂的密码都不是绝对安全的,一些暴力破解软件,菜鸟都会用...
数据库操作教程 2022-09-23 17:09:48 -
sqlserver通用的删除服务器上的所有相同后缀的临时表
复制代码代码如下:usetempdbifobject_id('tempdb..#table')isnotnulldroptabletempdb..#tableselectnameintotempdb..#tablefrom(select*fromsysobjectswherextype='U')awherea.namelike'%test_select'declare@tablevarchar(100),@countintselect@count=count(name)fromtempdb..#tablewhile(@count>0)beginselecttop1@table=namefromtempdb..#tableexec('ifobject_id('''+@table+''')isnotnulldroptable'+@table+'deletefromtempdb..#tablewherename='''+@table+'''')set@count=@count-1enddroptabletempdb..#table建议:尽量不要大量使用临时表,因为使用tempdb库会使...
数据库操作教程 2022-09-23 17:09:11 -
sql不常用函数总结以及事务,增加,删除触发器
sql不常用函数总结以及事务,增加,删除触发器distinct删除重复行declare@x申明一个变量convert(varchar(20),tscore.tenglish)类型转换cast(xxasvarchar(10))类型转换www...
数据库操作教程 2022-09-23 17:08:54 -
判断触发器正在处理的是插入,删除还是更新触发
但是有时候,可以视看处进逻辑程度,可以把三者写成一个触发器,只是在其中稍作判断而已。你可以根据从下面方法判断触发器是是处理了插入,删除还是更新触发的:复制代码代码如下:--宣告两个变量DECLARE@DBIT=0DECLARE@IBIT=0--如果在DELETED内部临时触发表找到记录,说明旧数据被删除IFEXISTS(SELECTTOP11FROMDELETED)SET@D=1--如果在INSERTED内部临时触发表找到记录,说明有新数据插入IFEXISTS(SELECTTOP11FROMINSERTED)SET@I=1--如果两个表都有记录,说明触发器是执行更新触发IF@I=1AND@D=1PRINT(N'更新...
数据库操作教程 2022-09-23 17:07:51 -
SQLServer误区30日谈第9天数据库文件收缩不会影响性能
误区#9:数据库文件收缩不会影响性能错误! 收缩数据库文件唯一不影响性能的情况是文件末尾有剩余空间的情况下,收缩文件指定了TruncateOnly选项。 收缩文件的过程非常影响性能,这个过程需要移动大量数据从而造成大量IO,这个过程会被记录到日志从而造成日志暴涨,相应的,还会占去大量的CPU资源...
数据库操作教程 2022-09-23 17:07:25 -
SQLServer误区30日谈第12天TempDB的文件数和需要和CPU数目保持一致
误区#12:TempDB的文件数和需要和CPU数目保持一致错误 哎,由于上述误区是微软“官方”的建议,并且还有大量博文坚持这个观点,这个误区已经是老生常谈。 但让人困惑的是SQLCAT团队给出的建议就是1:1,但这个建议是源自扩展方面的原理来说,而不是一个通用法则...
数据库操作教程 2022-09-23 17:07:06 -
SQLServer中减小Log文件尺寸的方法分享
首先use[数据库名称];execsp_helpfile;使用sp_helpfile查询可知道log文件的逻辑名称,然后就可以利用DBCC来减小LOG文件BACKUPLOG[数据库名]WITHTRUNCATE_ONLYdbccshrinkfile([log文件的逻辑名称],1)这个方法在MSSQLServer2008以及MSSQLServer2008R2中不再适用,会提示:TRUNCATE_ONLYisnotavalidBACKUPoption.应当采取这样的操作方法:复制代码代码如下:--首先把数据库的恢复模式改为SimpleALTERDATABASE[数据库名]SETRECOVERYSIMPLE;GO--缩小log文件至1M,逻辑名称可以通过sp_helpfile拿到DBCCSHRINKFILE([log文件逻辑名称],1);GO--重置数据库的恢复模式ALTERDATABASE[数据库名]SETRECOVERYFULL;GO...
数据库操作教程 2022-09-23 17:06:55 -
SQL语句删除2条重复数据一条保留一条
--任意的测试表复制代码代码如下:CREATETABLEtest_delete(namevarchar(10),valueINT);go--张三100与王五80是有重复的INSERTINTOtest_deleteSELECT'张三',100UNIONALLSELECT'张三',100UNIONALLSELECT'李四',80UNIONALLSELECT'王五',80UNIONALLSELECT'王五',80UNIONALLSELECT'赵六',90UNIONALLSELECT'赵六',70go--测试检索数据SELECTROW_NUMBER()OVER(PARTITIONBYname,valueORDERBY(SELECT1))ASno,name,valueFROMtest_deletenonamevalue-----------------------------------------1李四801王五802王五801张三1002张三1001赵六701赵六90--创建视图复制代码代码如下:CREATEVIEWtmp_viewASSELECTROW_NUMBER()OVER(PARTI...
数据库操作教程 2022-09-23 17:06:52 -
SQLserver删除某数据库中所有表实现思路
方便删除数据库中所有的数据表,清空数据库,有些有约束,不能直接delete,需要先删除库中的约束,代码如下复制代码代码如下:--删除所有约束DECLAREc1cursorforselect'altertable['+object_name(parent_obj)+']dropconstraint['+name+'];'fromsysobjectswherextype='F'openc1declare@c1varchar(8000)fetchnextfromc1into@c1while(@@fetch_status=0)beginexec(@c1)fetchnextfromc1into@c1endclosec1deallocatec1--删除数据库所有表declare@tnamevarchar(8000)set@tname=''select@tname=@tname+Name+','fromsysobjectswherextype='U'select@tname='droptable'+left(@tname,len(@tname)-1)exec(@tname)然后清空数据库中的所有表:...
数据库操作教程 2022-09-23 17:06:51