1>通过企业管理器进入查询分析执行:
EXEC sp_password NULL, '你的新密码', 'sa'
如果你在NT下(包括2000)装的SQL Server,则可以这样做:
直接打开"查询分析器"(注意不是从"企业管理器"中进入,可以从开始菜单的程序组进去,如果找不到的话,直接在"运行"中输入"isqlw.exe"也可);
选择"Windows身份验证"进入,不需要输入密码,只要你是本机的系统管理员或者域管理员,此时自动成为SQL Server的管理员;
在查询分析器窗口中输入下面的语句直接更改SA密码:
EXEC sp_password Null,'','sa'
运行后sa的密码变为空。
注:sp_password存储过程的功能是更改SQL Server登录的密码;
语法格式:
sp_password [ [ @old = ] \'old_password\' , ]
{ [ @new =] \'new_password\' }
[ , [ @loginame = ] \'login\' ]
参数说明
[@old =] \'old_password\' : 旧密码;
[@new =] \'new_password\' : 要指定的新密码
[@loginame =] \'login\' : 要指定的用户
返回值: 0(成功)或 1(失败)
以上方法的关键原理在于,从"查询分析器"中以"Windows身份验证"连接SQL Server,只要你是本机的系统管理员或者域管理员,此时自动成为SQL Server的管理员.
2>修改SQL Server 2000 和 SQL Se ......
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000
3. datediff 返回跨两个指定日期的日期和时间边界数。
select datediff(day,'2004-09-01','2004-09-18') --返回:17
4. datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2004-10-15') --返回 10
5. datename 返回代表指定日期的指定日期部分的字符串
SELECT datename(weekday, '2004-10-15') --返回:星期五
6. day(), month(),year() --可以与datepart对照一下
select 当前日期=convert(varchar(10),getdate(),120)
,当前时间=convert(varchar(8),getdate(),114)
select datename(dw,'2004-10-15')
select 本年第多少周=datename(week,'2004-10-15')
,今天是周几=datename(weekday,'2004-10-15')
函数 参数/功能
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方 ......
1、启用远程连接
开始——所有程序——Microsoft SQL Server 2008——配置工具——SQL Server配置管理器
SQL Server NetWork Configuration中选择协议,"Named pipes"和"TCP/IP"都选择Enable,然后点击"TCP/IP"选属性,IP Address 选项卡,将所有的 TCP动态端口 的0全部去掉,在所有 TCP端口 后填写1433(默认端口号), 确定。
2、启动SQL Server Browser 服务
我的电脑——管理——服务和应用程序——服务——找出SQL Server Browser,启动该服务 ......
客户反映程序很慢,开始以为数据量大,在表中查询使用的字段上,添加了索引,没有明显的效果,检查时发现以前的同事在sql server中写的函数中使用了in,而在in的结果集中会有2500条记录左右,执行时间需要13秒。找到问题根源,
修改方法: 把in后面的子查询作为一个表和主表关联,添加限制条件。
原来写法: select * from a where a.id in (select bid from b)
修改后写法: select a.* from a, b where a.id=b.bid
修改后执行时间为1秒。
所以,在使用in的时候,一定要考虑后面的集合到底有多大。如果很大,尽量不要使用in。 ......
SQL日期时间不能早于1753年
1.公元元年的第一天,也就是公元1年1月1日,那天是星期六。
2.
现行的公历是格利戈里历法,这个历法并不是连续的,中间缺少了11天。1752年9月2日的后一天并不是9月3日,而是9月14日。也就是说,从1752年9月3日到9月13日的11天并不存在。
3.抹掉这11天是由英国议会在1752年做出的决定。(详情见如下
“历史的空白”
)
……
微软和Sybase两大公司决定不允许在各自数据库的日期型数据早于1753年
,如果想使用早于1753年的日期,就不能用日期型格式,得想别的法子。
---------------------------------------------------------------------------------------------------------
历史的空白:1582年10月5日至10月14日(英国:1752年9月3日至13日)
在现在通行的历法记载上,全世界居然有十天没有任何人出生过,也没有任何人死亡过,也没有发生过大大小小值得纪念的人或事。这就是1582年10月5日至10月14日
持续时间为0的一年是什么意思?
事实上,目前世界通行的公历中,就有持续时间为 ......
参考:http://gaowenjie7758.blog.163.com/blog/static/5946788920091116244306/
SQL存储过程中SELECT与SET 对变量赋值的区别
SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两种方式还是有很多差别的。SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值。当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法。
下表列出 SET 与 SELECT 的区别。请特别注意红色部分。
set
select
同时对多个变量同时赋值
不支持
支持
表达式返回多个值时
出错
本人在2005中测试,也报错
表达式未返回值
变量被赋null值
本人在2005中测试,变量被赋null值
综上所述,set和select的区别在于,select支持同时对多个变量赋值,而set不支持
......