登录触发器强制检查Sybase客户端的字符集合
来源:优易学  2011-1-19 11:57:40   【优易学:中国教育考试门户网】   资料下载   IT书店
  公司开发的某个软件升级,客户端字符集全部从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

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训