当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: float f = 0.0001; system.out.println(f); string s = string.valueof(f); system.out.println(d); 打印结果是1.0e-4 如何格式化成为0.0001? ......
 ·最后的问题,谢谢各位    »显示摘要«
    摘要: 我做完了我的毕业设计,不过想到了一个问题,当有几个人同时登录我的系统,同时对一个表的内容进行修改,如何保持数据的完整性 ......


怎樣將一台Server上的Login,Server Roles,Users,Roles產生腳本

怎樣將一台Server上的Login,Server   Roles,Users,Roles產生腳本,在另一台完全相同的Server上運行,使其具有相同的Roles&Users的權限,謝謝!

NO.1   作者: leimin

try:  
  /*  
  1   (First   Script).   Execute   the   script   that   follows   to   create   the   stored   procedures.  
   
  NOTE:   The   following   procedure   is   dependent   on   SQL   Server   system   tables.   The   structure    
  of   these   tables   change   between   versions   of   SQL   Server,   and   selecting   directly   from    
  system   tables   is   discouraged.  
   
  NOTE:   It   should   be   run   on   the   source   server   to   get   script   to   create   PASWORDS   and   USERS    
  on   the   destination   which   should   then   run   on   destination   server.  
   
  */  
   
  USE   master  
  GO  
  IF   OBJECT_ID   (sp_hexadecimal)   IS   NOT   NULL  
      DROP   PROCEDURE   sp_hexadecimal  
  GO  
  CREATE   PROCEDURE   sp_hexadecimal  
          @binvalue   varbinary(256),  
          @hexvalue   varchar(256)   OUTPUT  
  AS  
  DECLARE   @charvalue   varchar(255)  
  DECLARE   @i   int  
  DECLARE   @length   int  
  DECLARE   @hexstring   char(16)  
  SELECT   @charvalue   =   0x  
  SELECT   @i   =   1  
  SELECT   @length   =   DATALENGTH   (@binvalue)  
  SELECT   @hexstring   =   0123456789ABCDEF  
  WHILE   (@i   <=   @length)  
  BEGIN  
      DECLARE   @tempint   int  
      DECLARE   @firstint   int  
      DECLARE   @secondint   int  
      SELECT   @tempint   =   CONVERT(int,   SUBSTRING(@binvalue,@i,1))  
      SELECT   @firstint   =   FLOOR(@tempint/16)  
      SELECT   @secondint   =   @tempint   -   (@firstint*16)  
      SELECT   @charvalue   =   @charvalue   +  
          SUBSTRING(@hexstring,   @firstint+1,   1)   +  
          SUBSTRING(@hexstring,   @secondint+1,   1)  
      SELECT   @i   =   @i   +   1  
  END  
  SELECT   @hexvalue   =   @charvalue  
  GO  
   
  IF   OBJECT_ID   (sp_help_revlogin)   IS   NOT   NULL  
      DROP   PROCEDURE   sp_help_revlogin    
  GO  
  CREATE   PROCEDURE   sp_help_revlogin   @login_name   sysname   =   NULL   AS  
  DECLARE   @name         sysname  
  DECLARE   @xstatus   int  
  DECLARE   @binpwd     varbinary   (255)  
  DECLARE   @txtpwd     sysname  
  DECLARE   @tmpstr     varchar   (255)  
   
  IF   (@login_name   IS   NULL)  
      DECLARE   login_curs   CURSOR   FOR    
          SELECT   name,   xstatus,   password   FROM   master..sysxlogins    
          WHERE   srvid   IS   NULL   AND   name   <>   sa  
  ELSE  
      DECLARE   login_curs   CURSOR   FOR    
          SELECT   name,   xstatus,   password   FROM   master..sysxlogins    
          WHERE   srvid   IS   NULL   AND   name   =   @login_name  
  OPEN   login_curs    
  FETCH   NEXT   FROM   login_curs   INTO   @name,   @xstatus,   @binpwd  
  IF   (@@fetch_status   =   -1)  
  BEGIN  
      PRINT   No   login(s)   found.  
      CLOSE   login_curs    
      DEALLOCATE   login_curs    
      RETURN   -1  
  END  
  SET   @tmpstr   =   /*   sp_help_revlogin   script      
  PRINT   @tmpstr  
  SET   @tmpstr   =   **   Generated      
      +   CONVERT   (varchar,   GETDATE())   +     on     +   @@SERVERNAME   +     */  
  PRINT   @tmpstr  
  PRINT    
  PRINT   DECLARE   @pwd   sysname  
  WHILE   (@@fetch_status   <>   -1)  
  BEGIN  
      IF   (@@fetch_status   <>   -2)  
      BEGIN  
          PRINT    
          SET   @tmpstr   =   --   Login:     +   @name  
          PRINT   @tmpstr    
          IF   (@xstatus   &   4)   =   4  
          BEGIN   --   NT   authenticated   account/group  
              IF   (@xstatus   &   1)   =   1  
              BEGIN   --   NT   login   is   denied   access  
                  SET   @tmpstr   =   EXEC   master..sp_denylogin     +   @name   +    
                  PRINT   @tmpstr    
              END  
              ELSE   BEGIN   --   NT   login   has   access  
                  SET   @tmpstr   =   EXEC   master..sp_grantlogin     +   @name   +    
                  PRINT   @tmpstr    
              END  
          END  
          ELSE   BEGIN   --   SQL   Server   authentication  
              IF   (@binpwd   IS   NOT   NULL)  
              BEGIN   --   Non-null   password  
                  EXEC   sp_hexadecimal   @binpwd,   @txtpwd   OUT  
                  IF   (@xstatus   &   2048)   =   2048  
                      SET   @tmpstr   =   SET   @pwd   =   CONVERT   (varchar,     +   @txtpwd   +   )  
                  ELSE  
                      SET   @tmpstr   =   SET   @pwd   =   CONVERT   (varbinary,     +   @txtpwd   +   )  
                  PRINT   @tmpstr    
                  SET   @tmpstr   =   EXEC   master..sp_addlogin     +   @name    
                      +   ,   @pwd,   @encryptopt   =    
              END  
              ELSE   BEGIN    
                  --   Null   password  
                  SET   @tmpstr   =   EXEC   master..sp_addlogin     +   @name    
                      +   ,   NULL,   @encryptopt   =    
              END  
              IF   (@xstatus   &   2048)   =   2048  
                  --   login   upgraded   from   6.5  
                  SET   @tmpstr   =   @tmpstr   +   skip_encryption_old    
              ELSE    
                  SET   @tmpstr   =   @tmpstr   +   skip_encryption  
              PRINT   @tmpstr    
          END  
      END  
      FETCH   NEXT   FROM   login_curs   INTO   @name,   @xstatus,   @binpwd  
      END  
  CLOSE   login_curs    
  DEALLOCATE   login_curs    
  RETURN   0  
  GO    
   
  --   In   Query   Analyzer,   run   the   following   command   to   get   the   all   logins   and   passwords  
   
  --   EXEC   master..sp_help_revlogin    
   
  /*  
  2.   (Second   Script)Fixing   the   Orphaned   User   Connectios   after   trasfering   the   logins   and   passwords.  
  */  
   
  declare   @usrname   varchar(100),   @command   varchar(100)  
   
  declare   Crs   insensitive   cursor   for  
   
      select   name   as   UserName   from   sysusers  
      where   issqluser   =   1   and   (sid   is   not   null   and   sid   <>   0x0)  
                                          and   suser_sname(sid)   is   null  
      order   by   name  
   
  for   read   only  
   
  open   Crs  
   
  fetch   next   from   Crs   into   @usrname  
  while   @@fetch_status=0  
   
  begin  
   
      select   @command=   sp_change_users_login     auto_fix,   +@usrname+    
   
      exec(@command)  
   
      fetch   next   from   Crs   into   @usrname  
   
  end  
   
  close   Crs  
   
  deallocate   Crs  
   
  /*  
  3   (Third   Script)   Fixing   some   Orphaned   Users   left   after   step   2.  
  */  
   
  --   sp_change_users_login   auto_fix,<user_name>  
  --   sp_change_users_login   update_one,<user_name>,<user_name>  
   
   
   
   
   
   
   
   
   
 

NO.2   作者: DreamMeng

gz  
 


    摘要: 我建了一个全局变量int flag; 打算在几个事件中交替改变它的值,用来作为判断某个事件的依据,但为社么在一个事件中改变了它的值,在另一个事件中得不到改变后的值呢? 我的条件判断语句为:if(flag==1){....} else if (flag==2){...} else {...} 经测试,flag并没有得到在其它触发事件中改变的值! 敬请各位大哥看看,万分感激! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE