如果您想了解sql server 2005中使用with实现递归的方法的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于SQL Server 2005中更改sa的用户名的方法、SQL server 2005中设置自动编号字段的方法、SQL Server 公用表表达式(CTE)实现递归的方法、sql-server – sql server 2005中的递归函数?的有价值的信息。
WITH fw_requestion_note_temp(old_apply_id) AS ( --取根节点放入临时表 SELECT old_apply_id FROM fw_requestion_note --WHERE old_apply_id = 'e741470e-8b5c-4f91-9b03-c7474d103aef' --根据已取到的数据递归取其字节点的数据
UNION ALL SELECT fw.old_apply_id FROM fw_requestion_note fw INNER JOIN fw_requestion_note_temp temp ON fw.apply_id = temp.old_apply_id ) SELECT old_apply_id FROM fw_requestion_note_temp
SQL Server 2005中更改sa的用户名的方法
修改数据库SA账号名称的代码如下:
复制代码 代码如下:
Alter LOGIN sa DISABLE
Alter LOGIN sa WITH NAME = [systemAccount]
15. 启动“SQL Server Management Studio”,在“连接到服务器”对话框中,即可选择“SQL Server 身份验证”。如下图所示:
16. 在“登录名”框中输入“sa”,再输入修改过的密码,然后点击“连接”按钮,即可成功启动“SQL Server Management Studio”!
二、使用SQL语句修改SQL Server 2005中sa用户的密码
首选,使用Windows身份验证的方式启动“SQL Server Management Studio”,
其次,在“服务器属性”窗口中选择“SQL Server 和 Windows 身份验证模式”项,
然后,取消“强制实施密码策略”项。
最后在“新建查询”中执行下面的代码之一:
代码一:
ALTER LOGIN sa ENABLE; GO ALTER LOGIN sa WITH PASSWORD = ''password''; GO
代码二:
ALTER LOGIN sa WITH PASSWORD = N''新密码'' -- 可以这样使用:WITH PASSWORD = N''123456'' OLD_PASSWORD = N''旧密码''
代码三:
alter login [sa] with password=N''NewPassword'' --可以不用提供旧密码 --alter login [sa] with password=N''123456''
三、相关阅读
SQL Server 2000修改sa密码的方法
您可能感兴趣的文章:
Server2005中更改sa的用户名的多种方法
SQLServer更改sa用户名的方法
SQL server 2005中设置自动编号字段的方法
如果希望重新定义在表中添加新记录时该列中自动生成并存储于列中的序列号,则可以更改该列的标识属性。在每个表中只能设置一个列的标识属性。
具有标识属性的列包含系统生成的连续值,该值唯一地标识表中的每一行(例如,雇员标识号)。在包含标识列的表中插入值时,Microsoft sql Server 将基于上一次使用的标识值(标识种子属性)和在创建列时指定的增量值(标识增量属性)自动生成下一个标识符。
rush:sql;">
create table mytest
(
id int primary key identity(1,1),--主键,自动+1
name varchar(20) unique not null,--不允许重复,不允许为空
Age tinyint,notetime smalldatetime default getdate()
)
insert into mytest values ('张三',20,getdate())
insert into mytest (name,age)values ('李四',20)
create table Role_CTE
(
Id int not null,
Name nvarchar(32) not null,
ParentId int not null
)
insert into Role_CTE(Id,Name,ParentId)
select ''1'',''超级管理员'',''0'' union
select ''2'',''管理员A'',''1'' union
select ''3'',''管理员B'',''2'' union
select ''4'',''会员AA'',''2'' union
select ''5'',''会员AB'',''2'' union
select ''6'',''会员BA'',''3'' union
select ''7'',''会员BB'',''3'' union
select ''8'',''用户AAA'',''4'' union
select ''9'',''用户BBA'',''7''
-- 创建一个复合聚集索引
create clustered index Clu_Role_CTE_Index
on Role_CTE(Id,ParentId)
with
(
pad_index=on,
fillfactor=50,
drop_existing=off,
statistics_norecompute=on
)
select * from Role_CTE
查找指定节点的所有子孙节点:
使用普通 sql 语句实现:
declare @level int
declare @node int
declare @ResTab table
(
node int not null,
lv int not null
)
set @level=0 -- 表示初始的等级
set @node=3 --表示初始的节点ID,即从指定的哪个节点开始查找
insert into @ResTab -- 为表变量插入初始的数据
select Id,@level
from Role_CTE
where Id=@node
while(@@ROWCOUNT>0)
begin
set @level=@level+1
insert into @ResTab
select b.Id,@level
from @ResTab a
join Role_CTE b on a.node=b.ParentId and lv=@level-1 -- join 等于 inner join(内连接)和自连接
end
select a.node,b.Name,a.lv
from @ResTab a
left join Role_CTE b on a.node=b.Id
declare @level int
declare @node int
declare @num int
declare @ResTab table
(
node int not null,
lv int not null
)
set @level=0 -- 表示初始的等级
set @node=3 --表示初始的节点ID,即从指定的哪个节点开始查找
set @num=1 -- 指定递归层级,即循环的次数
insert into @ResTab -- 为表变量插入初始的数据
select Id,@level
from Role_CTE
where Id=@node
while(@@ROWCOUNT>0 and @level<@num)
begin
set @level=@level+1
insert into @ResTab
select b.Id,@level
from @ResTab a
join Role_CTE b on a.node=b.ParentId and lv=@level-1 -- join 等于 inner join(内连接)和自连接
end
select a.node,b.Name,a.lv
from @ResTab a
left join Role_CTE b on a.node=b.Id
当然,如果指定了循环次数,就可以不用 while 判断语句的 @@rowcount>0 了。
使用 SQL CTE 实现:
declare @node int
set @node=3;
with temp_cte
as
(
select Id,Name,0 lv -- 查询出“根节点”,即指定的起始节点
from Role_CTE
where Id=@node
union all
select b.Id,b.Name,a.lv+1
from temp_cte a
join Role_CTE b on a.Id=b.ParentId
)
select * from temp_cte
使用 CTE 控制递归的层数,与上面类似。如下:
declare @node int
declare @num int
set @node=3;
set @num=1;
with temp_cte
as
(
select Id,Name,0 lv -- 查询出“根节点”,即指定的起始节点
from Role_CTE
where Id=@node
union all
select b.Id,b.Name,a.lv+1
from temp_cte a
join Role_CTE b on a.Id=b.ParentId
and a.lv<@num --控制递归层数
)
select * from temp_cte
查找指定节点的所有祖先节点:
使用普通 sql 语句实现:
declare @level int
declare @node int
declare @num int
declare @ResTab table
(
node int not null,
lv int not null
)
set @level=0 -- 表示初始的等级
set @node=8 --表示初始的节点ID,即从指定的哪个节点开始查找
set @num=2 -- 指定递归层级,即循环的次数
while(@level<=@num and @node is not null) -- 如果为空就表示没有查到父级了
begin
insert into @ResTab
select @node,@level
set @level=@level+1
select @node=ParentId
from Role_CTE
where Id=@node
end
select a.node,b.Name,a.lv
from @ResTab a
left join Role_CTE b on a.node=b.Id
使用 SQL CTE 实现:
declare @node int
declare @num int
set @node=8;
set @num=2;
with temp_cte
as
(
select Id,Name,ParentId,0 lv -- 查询出“根节点”,即指定的起始节点
from Role_CTE
where Id=@node
union all
select b.Id,b.Name,b.ParentId,a.lv+1
from temp_cte a
join Role_CTE b on a.ParentId=b.Id
and a.lv < @num --控制递归层数
)
select * from temp_cte
以上所述是小编给大家介绍的SQL Server 公用表表达式(CTE)实现递归的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对网站的支持!
您可能感兴趣的文章:
sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日期
SqlServer使用公用表表达式(CTE)实现无限级树形构建
使用SqlServer CTE递归查询处理树、图和层次结构
在sqlserver中如何使用CTE解决复杂查询问题
SQL SERVER 2008 CTE生成结点的FullPath
SQLSERVER2008中CTE的Split与CLR的性能比较
使用SQLSERVER 2005/2008 递归CTE查询树型结构的方法
SQL Server使用T-SQL进阶之公用表表达式(CTE)
sql-server – sql server 2005中的递归函数?
任何人都可以建议用于说明递归函数的编程示例吗?
例如斐波那契系列或因子…
解决方法
以下是我使用google.com发现的一些文章;)
Recursion in T–SQL Using recursion in stored procedures A Recursive User-Defined Function (SQL Server 2000)
今天关于sql server 2005中使用with实现递归的方法的分享就到这里,希望大家有所收获,若想了解更多关于SQL Server 2005中更改sa的用户名的方法、SQL server 2005中设置自动编号字段的方法、SQL Server 公用表表达式(CTE)实现递归的方法、sql-server – sql server 2005中的递归函数?等相关知识,可以在本站进行查询。