环球网校是美国纳斯达克上市企业欢聚时代(NASDAQ:YY)旗下品牌 | 住房和城乡建设部 建筑人才培训合作单位
您现在的位置在: > 计算机类 > 计算机等级考试 > 考试辅导 >

计算机等级考试辅导:登录触发器强制检查Sybase客户端的字符集合

2010-06-29 来源:互联网 作者:第一考试网

计算机等级考试辅导:登录触发器强制检查Sybase客户端的字符集合 #

  公司开发的某个软件升级,客户端字符集全部从cp850改为cp936。为避免未改字符集的用户误登录,写了一个登录触发器,强行进行检查。一旦发现客户端程序使用的不是cp936,强行中止会话。
  注意,登录错误信息,不会输出到客户端,而是记录在数据库系统日志中。
  /* 登录用户的缺省数据库,有时不一定是master库 */
  use master
  go
  /* 检查登录字符集的存储过程 */
  If Exists( Select 1 From sysobjects
  Where type = ’P’ and name = ’sp_checklogin’ )
  drop procedure sp_checklogin
  go
  create procedure sp_checklogin
  as
  begin
  declare @validcs varchar(100)
  declare @hostname varchar(30)
  declare @program_name varchar(30)
  declare @ipaddr varchar(64)
  select @validcs = ’cp936’,
  @hostname = hostname,
  @program_name = program_name,
  @ipaddr = ipaddr
  from master..sysprocesses
  where spid = @@spid #
  if @@client_csname <> @validcs
  begin
  print "Login error: your client charset is %1!, please set it to %2!." ,
  @@client_csname, @validcs
  print "--host name: %1!", @hostname
  print "--program name: %1!", @program_name
  print "--IP address: %1!", @ipaddr
  select syb_quit()
  end
  end
  go
  /* 设置TryUser用户登录触发器的例子 */
  sp_modifylogin TryUser, ’login script’, sp_checklogin
  go

#

责编: 返回顶部  打印

关于我们联系我们友情链接网站声明网站地图广告服务帮助中心