sqlserver添加多个用户脚本

来源:互联网 发布:visio网络形状库下载 编辑:程序博客网 时间:2024/05/16 18:07

超哥说:“天骄,帮我创建几个用户,并生成数据库insert脚本给我。”

我:“好”

开始噼里啪啦写SQL语句

insert into dbo.XXXX (a,b,c,d) values ('a','b','c','d')

复制,粘贴 f5 /复制,粘贴 f5/复制,粘贴 f5/复制,粘贴 f5/复制,粘贴 f5/复制,粘贴 f5/复制,粘贴 f5!@#$%^&*()

好了,保存生成SQL发给超哥,

超哥:“就一个人?”

我:“马上好”

继续噼里啪啦写SQL,这时候问题来了,怎么一下子创建多个用户,难道要复制个十行八行的么,那也没啥区别啊

总结下来,思路就是用INSERT INTO DBO.XXX1 SELECT C1,C2,C3 FROM DBO.XXX2

这个XXX1好说了,直接是user表,那么XXX2哪来呢,有了,建个临时表,只有一个username字段,这样就可以了

create table #tb ([UserName] [varchar](50) NULL)insert into #tb values ('aa'),('bb')
问题又来了,这样虽然是简单了许多,只要把aa,bb什么的一个个换成要创建的username就好了,可还觉得麻烦,

要是用户名是逗号分隔的字符串,这样替换也是蛮麻烦的,要是有个函数把字符串换成表就好了,各种百度,有现成的split函数,

ALTER function [dbo].[f_SplitToNvarchar](@SourceSql nvarchar(max),--源分隔字符串@StrSeprate varchar(10)--分隔符)returns @temp table(a nvarchar(max))as begin    declare @i int    set @SourceSql=rtrim(ltrim(@SourceSql))    set @i=charindex(@StrSeprate,@SourceSql)    while @i>=1    begin        insert @temp values(left(@SourceSql,@i-1))        set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)        set @i=charindex(@StrSeprate,@SourceSql)    end    if @SourceSql<>'\'       insert @temp values(@SourceSql)    return end
调用的时候也是蛮简单的,如下
insert into [sys_Usertest]select   a   ,'202CB962AC59075B964B07152D234B70'           ,1           ,1           ,getdate()           ,1           ,getdate()           ,getdate()           ,getdate()           ,'2015-01-25 12:01:14.797'           ,'2016-01-25 12:01:14.797'           ,0           ,getdate()           ,0           ,''           ,0           ,'测试'           from dbo.[f_SplitToNvarchar]('a,b,c,d',',') b

大功告成,不过没发给超哥,没必要的样子,学会了就好了,是呗


0 0
原创粉丝点击