MSSQL中检查所使用的语句是否标准
检查所使用的语句是否标准
/*
标准SQL和T-SQL之间有很多区别——太多了,这里就不说了。还有,如果你在SQL Server上工作,
那么使用这些私有的扩展是有好处的。由于许多SQL Server的特性的本质,你不使用非标准的命令的话,
将会有很多强大的功能无法实现。如果你想要看看你的SQL是否符合标准,你可以使用SET FIPS_FLAGGER
命令
*/
SET FIPS_FLAGGER 'level'
/*
' level '
对 FIPS 127-2 标准的遵从级别,将检查所有数据库操作是否达到该级别。如果数据库操作与选定的 ISO 标准级别冲突,则 Microsoft SQL Server 将生成一个警告。
level 必须是下列值中的一个。
值 说明
ENTRY 检查是否遵从 ISO 入门级标准。
FULL
检查是否遵从 ISO 完全级标准。
INTERMEDIATE 检查是否遵从 ISO 中间级标准。
OFF
不检查是否遵从标准。
*/
/*
SET FIPS_FLAGGER 的设置是在分析时设置,而不是在执行或运行时设置。在分析时进行设置意味着:SET 语句只要出现在批处理或存储过程中即生效,与代码执行实际上是否到达该点无关;并且 SET 语句在任何语句执行之前生效。例如,假设 SET 语句在 IF...ELSE 语句块中,而在执行过程中从未到达过该语句块,但由于分析了 IF...ELSE 语句块,因此 SET 语句仍生效。
如果在存储过程中设置 SET FIPS_FLAGGER,则从存储过程返回控制后将还原 SET FIPS_FLAGGER 的值。因此,在动态 SQL 中指定的 SET FIPS_FLAGGER 语句对动态 SQL 语句之后的任何语句无效。
*/
相关文档:
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id ......
Sql2005中使用ow_number() partition进行分组实验,
SQL:
select * from stu
select id,row_number() over (partition by snm order by id) from stu
结果:
id snm
----------------
111 111V
111 111W
222 222N
333 3123
444 3123
555 3123
666 3232
777 3232
--分组后的结果
id &n ......
最近有个小东西要查看mssql数据库是用php实现的,以前我用php5.2时感觉挺简单的所以想php5.3也应该很简单的
为什么要用php5.3呢因为我想用sqlite3.0的啊,因为php5.2的不支持sqlite3.0的啊,所以我特意去下了5.3了下载回来了才发现5.3里没有mssql的dll扩展了,郁闷啊,不管这么多先用起那sqlite3.0再说了
sqlite3.0的部分 ......
如何创建链接服务器
IF EXISTS (SELECT srv.name from sys.servers srv WHERE srv.server_id != 0 AND srv.name = N'链接服务器名')
EXEC master.dbo.sp_dropserver @server=N'链接服务器名'', @droplogins='droplogins'
GO
EXEC master.dbo.sp_addlinkedserver
@server = N'链接服务器名'', @srvproduct= ......