学习SQL数据库,SQL Server系统函数是不能不提到的,下面就将为您介绍几种常见的SQL Server系统函数,希望对您能有所帮助。
系统变量
@@CONNECTIONS 返回自上次启动 Microsoft® SQL Server™ 以来连接或试图连接的次数。

@@MAX_CONNECTIONS 返回 Microsoft® SQL Server™ 上允许的同时用户连接的***数。返回的数不必为当前配置的数值。
系统存储过程
提供关于当前 Microsoft® SQL Server™ 用户和进程的信息。可以筛选返回的信息,以便只返回那些不是空闲的进程。
列出所有活动的用户:SP_WHO ‘active’
列出某个特定用户的信息:SP_WHO ‘sa’
系统表
Sysprocesses
sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息。这些进程可以是客户端进程或系统进程。sysprocesses 只存储在 master 数据库中。
Sysperfinfo
包括一个 Microsoft® SQL Server™ 表示法的内部性能计数器,可通过 Windows NT 性能监视器显示.
有人提议说为了获取SQL Server的当前连接数:使用如下SQL:
SELECT COUNT(*) AS CONNECTIONS FROM master..sysprocesses
个人认为不对,看看.sysprocesses的login_time列就可看出.
另外一个方面是进程不能和连接相提并论,他们是一对一的关系吗,也就是说一个进程就是一个连接?一个连接应该有多个进程的,所以连接和进程之间的关系应该是1:n的.
因为sysprocesses列出的进程包含了系统进程和用户进程,为了得到用户连接,可以使用如下SQL:
SELECT cntr_value AS User_Connections FROM master..sysperfinfo as pWHERE p.object_name = ‘SQLServer:General Statistics’ And p.counter_name = ‘User Connections’
个人还是认为不对,因为它是一个计数器,可能会累加的.
还有一种方案是利用如下SQL:
select connectnum=count(distinct net_address)-1 from master..sysprocesses
理由是net_address是访问者机器的网卡值,这个总该是唯一的吧.但是看起来得到的是所有时间内的连接数。
【编辑推荐】
带您了解SQL Server系统视图
SQL Server时间查询语句实例
SQL Server查询语句的设计
带您了解SQL Server分页查询语句
SQL Server连接错误的处理方法

sql server关于函数中如何使用Getdate()
-----以下是解析--------应为function内部不允许使用函数可以是确定的或不确定的。 如果任何时候用一组特定的输入值调用函数时返回的结果总是相同的,则这些函数为确定的。 如果每次调用函数时即使用的是相同的一组特定输入值,返回的结果总是不同的,则这些函数为不确定的。 不确定的函数会产生副作用。 副作用是更改数据库的某些全局状态,比如更新数据库表或某些外部资源,如文件或网络等(例如,修改文件或发送电子邮件消息)。 不允许在用户定义函数主体中内置不确定函数;这些不确定函数如下:@@CONNECTIONS @@TOTAL_ERRORS@@CPU_BUSY @@TOTAL_READ@@IDLE @@TOTAL_WRITE@@IO_BUSY GETDATE@@MAX_CONNECTIONS GETUTCDATE@@PACK_RECEIVED NEWID@@PACK_SENT RAND@@PACKET_ERRORS TEXTPTR@@TIMETICKS尽管在用户定义函数主体中不允许有不确定函数,这些用户定义函数在调用扩展存储过程时仍会产生副作用。 由于扩展存储过程会对数据库产生副作用,因此调用扩展存储过程的函数是不确定的。 当用户定义函数调用会对数据库产生副作用的扩展存储过程时,不要指望结果集保持一致或执行函数。
什么是SQL Server的确定性函数和不确定性函数
只要使用特定的输入值集并且数据库具有相同的状态,那么不管何时调用,确定性函数始终都会返回相同的结果。 即使访问的数据库的状态不变,每次使用特定的输入值集调用非确定性函数都可能会返回不同的结果。 例如,函数 AVG 对上述给定的限定条件始终返回相同的值,但返回当前 datetime 值的 GETDATE 函数始终会返回不同的结果。 有多个用户定义函数的属性通过对调用函数的计算列进行索引或通过引用函数的索引视图确定 SQL Server 数据库引擎为函数的结果建立索引的功能。 函数的确定性是一个属性。 例如,如果一个视图引用了任何不确定性函数,则无法对该视图创建聚集索引。 有关函数属性(包括函数确定性)的详细信息,请参阅用户定义函数。 本主题介绍了内置系统函数的确定性,以及在包含对扩展存储过程的调用时对用户定义函数的确定性的影响。 内置函数的确定性用户无法影响任何内置函数的确定性。 每个内置函数都根据 SQL Server 实现该函数的方式而分为确定性函数或非确定性函数。 例如,在查询中指定 ORDER BY 子句不会更改查询中使用的函数的决定机制。 所有字符串内置函数都具有确定性。 有关这些函数的列表,请参阅字符串函数 (Transact-SQL)。 内置函数类别中除字符串函数以外的下列内置函数始终具有确定性。 ABSDATEDIFFPOWERACOSDAYRADIANSASINDEGREESROUNDATANEXPSIGNATN2FLOORSINCEILINGISNULLSQUARECOALESCEISNUMERICSQRTCOSLOGTANCOTLOG10YEARDATALENGTHMONTHDATEADDNULLIF下列函数并非始终是确定性函数,但是在以确定性方式指定后,可用于索引视图或计算列的索引。 函数注释所有聚合函数除非用 OVER 和 ORDER BY 子句指定聚合函数,否则所有聚合函数都具有确定性。 有关这些函数的列表,请参阅聚合函数 (Transact-SQL)。 CAST除非与 datetime、smalldatetime 或 sql_variant 一起使用,否则其他时候都是确定性的。 CONVERT除非存在下列条件,否则为确定性函数:源类型是 sql_variant。 目标类型是 sql_variant,其源类型不是确定性的。 源类型或目标类型是 datetime 或 smalldatetime,其他源类型或目标类型是字符串,并且指定了不确定的样式。 若要为确定样式,则样式参数必须是常量。 此外,除了样式 20 和 21,小于或等于 100 的样式都具有不确定性。 大于 100 的样式具有确定性,但样式 106、107、109 和 113 除外。 CHECKSUM确定性函数,CHECKSUM(*) 除外。 ISDATE只有与 CONVERT 函数一起使用、指定 CONVERT 样式参数并且样式不等于 0、100、9 或 109 时,才是确定性函数。 RAND仅当指定 seed 参数时,RAND 才是确定性函数。 所有配置、游标、元数据、安全和系统统计函数都是非确定性函数。 有关这些函数的列表,请参阅配置函数 (Transact-SQL)、游标函数 (Transact-SQL)、元数据函数 (Transact-SQL)、安全函数 (Transact-SQL) 和系统统计函数 (Transact-SQL)。 其他类别中的下列内置函数始终为非确定性函数。 @@CONNECTIONSGETDATE@@CPU_BUSYGETUTCDATE@@DBTSGET_TRANSMISSION_STATUS@@IDLELAG@@IO_BUSYLAST_VALUE@@MAX_CONNECTIONSLEAD@@PACK_RECEIVEDMIN_ACTIVE_ROWVERSION@@PACK_SENTNEWID@@PACKET_ERRORSNEWSEQUENTIALID@@TIMETICKSNEXT VALUE FOR@@TOTAL_ERRORSNTILE@@TOTAL_READPARSENAME@@TOTAL_WRITEPERCENTILE_CONTCUME_DISTPERCENTILE_DISCCURRENT_TIMESTAMPPERCENT_RANKDENSE_RANKRANDFIRST_VALUERANKROW_NUMBERTEXTPTR从函数中调用扩展存储过程由于扩展存储过程会对数据库产生副面影响,因此调用扩展存储过程的函数为不确定性函数。 负面影响为对数据库全局状态的更改,如更新表、更新文件或网络等外部资源;例如,修改文件或发送电子邮件。 从用户定义函数中执行扩展存储过程时,不应该依靠返回一致的结果集。 建议不要使用对数据库产生负面影响的用户定义函数。 从函数内部调用扩展存储过程时,该扩展存储过程不能向客户端返回结果集。 任何向客户端返回结果集的开放式数据服务 API 将产生返回代码 FAIL。 扩展存储过程可以连接回 SQL Server。 但是,该过程不能与调用扩展存储过程的原始函数联接同一事务。 类似于从批处理或存储过程中调用,扩展存储过程在运行 Microsoft 的 SQL Server Windows 安全帐户的上下文中执行。 扩展存储过程的所有者在授予其他用户执行该过程的权限时应该考虑此问题。
1.总结归纳SQL Server中系统函数的用法, 2.编写一个函数,去掉一个字符串中的所有空格,用ALLTrim。
create function AllTrim(@Strnvarchar(2000)) Returnsnvarchar(2000)asbeginRETURN replace(@Str, ,)end
发表评论