第一个问题:  setuser N'th'
GO这个语句是什么意思?    如果想要成功,‘th’必须满足怎样的条件?   
第二个问题:如果脚本由n个独立段组成(独立段:单独拿出来在sql没有错误的条件下执行的话没有问题的sql语句块),其中,第k段出现找不到表,或者创建表重复,之类的错误,但是,第k+1段是正确的,请问,第k+1段能否执行
注:请愿意帮我的朋友,解释的白话一点,因为,我不会数据库,完全不会sql语言,不会和数据库一切相关的所有术语。所以,说高深术语的朋友的帖子,我可能根本不知道你再说什么。

解决方案 »

  1.   

    第一个问题,
    SETUSER 是指指定用户,允许 sysadmin 固定服务器角色的成员或 db_owner 固定数据库角色的成员模拟另一用户.
    SETUSER (Transact-SQL)
    http://msdn.microsoft.com/zh-cn/library/ms186297.aspx
    如果要
    setuser N'th'
    GO
    成功执行,数据库中必须有th这个用户.
      

  2.   

    第二个问题,
    如果脚本由n个独立段组成(独立段:单独拿出来在sql没有错误的条件下执行的话没有问题的sql语句块),
    其中,第k段出现找不到表,或者创建表重复,之类的错误,但是,第k+1段是正确的,请问,第k+1段能否执行.
    --------------
    2005中如果使用在第K段结束使用 GO ,
    那么K+1段是可以执行的,
    2000没有测试过,
    不清楚.
      

  3.   

    第二个问题建议方式是,
    在创建或者删除表之前判断是否存在,然后在执行.
    这样就可以尽量避免错误出现,
    如:
    if object_id(N'tb') is not null 
    drop table tb
    go
    create table tb ....go
      

  4.   


    SETUSER [ 'username' [ WITH NORESET ] ] 参数'username' 当前数据库中被模拟的 SQL Server 用户名或 Microsoft Windows 用户名。如果未指定 username,将重置模拟用户的系统管理员或数据库所有者的原始标识。权限
    要求具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员资格。
      

  5.   

    第k+1不能成功可以判断后删除+重键+go