您的位置:首页 > 数据库

MS SQLDRVER学习应用几点总结

2011-12-09 12:41 197 查看
1、不支持从高类型转化到低类型
  虽然 SQL Server 有时会将 tinyint 或 smallint 值提升为 int 数据类型,但是它不会自动将 tinyint、smallint 或 int 提升为 bigint。例如,如果参数表达式的数据类型是 tinyint 或 smallint,某些聚合函数会把返回值的数据类型升级为 int。而这些聚合函数将不会返回 bigint,除非参数表达式本身就是 bigint 类型。
  当数据值一定要按照指定精确存储时,可以用带有小数的 decimal 数据类型来存储数字。
  数据精度就是数中数字个数,小数位数是数中小数点右边的数字个数,binary、varbinary、和 image 数据类型的长度是字节数。如果两个数类型相同则结果集中为确定的类型,
如果不同,刚以数字型的精度优先。

2、关于货币型数据
1、在数据前一定要货币符号
2、小数点后最多4 位,友多则用decimal型
3、带豆号的,把money型转化为字符串,在加豆号输出

3、关于文件组
创建和更改默认文件组是为了防止不确定的用户自定义对象和在特定的用户自定义文件组中抢空间。
经测试,一个文件组可以跨多个磁盘,一个文件则只能在一个磁盘。

4、强行断开MS SQLSERVER所有用户连接。

use master
go

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[p_killspid]
GO

create proc p_killspid
@dbname varchar(200) --要关闭进程的数据库名
as
declare @sql nvarchar(500)
declare @spid nvarchar(20)

declare #tb cursor for
select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)

open #tb
fetch next from #tb into @spid
while @@fetch_status=0
begin
exec('kill '+@spid)
fetch next from #tb into @spid
end
close #tb
deallocate #tb
go

--用法
exec p_killspid 'PMDB'
go

5、设定为单用户模式的语句:

EXEC SP_DBOPTION 'PMDB','SINGLE USER','TRUE'

6、MS SQL导出到excel语句

INSERT INTO OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 97-2000;HDR=YES;DATABASE=C:\TEST.XLS',Orders)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: