1.
系统管理员 (sa) 登录
系统管理员 (sa) 是为向后兼容而提供的特殊登录。默认情况下,它指派给固定服务器角色 sysadmin,并不能进行更改。虽然 sa 是内置的管理员登录,但不应例行公事地使用它。相反,应使系统管理员成为 sysadmin 固定服务器角色的成员,并让他们使用自己的登录来登录。只有当没有其它方法登录到 Microsoft® SQL Server™ 实例(例如,当其它系统管理员不可用或忘记了密码)时才使用 sa。说明  在安装 SQL Server 时,如果请求混合模式身份验证,则 SQL Server 安装程序将提示更改 sa 登录密码。建议立即指派密码以防未经授权地使用 sa 登录访问 SQL Server 实例。
----------------
数据库所有者 (dbo)
dbo 是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。例如,如果用户 Andrew 是固定服务器角色 sysadmin 的成员,并创建表 T1,则表 T1 属于 dbo,并以 dbo.T1 而不是 Andrew.T1 进行限定。相反,如果 Andrew 不是固定服务器角色 sysadmin 的成员,而只是固定数据库角色 db_owner 的成员,并创建表 T1,则 T1 属于 Andrew,并限定为 Andrew.T1。该表属于 Andrew,因为该成员没有将表限定为 dbo.T1。无法删除 dbo 用户,且此用户始终出现在每个数据库中。只有由 sysadmin 固定服务器角色成员(或 dbo 用户)创建的对象才属于 dbo。由任何其他也不是 syadmin 固定服务器角色成员的用户(包括 db_owner 固定数据库角色成员)创建的对象: 属于创建该对象的用户,而不是 dbo。
用创建该对象的用户名限定。

解决方案 »

  1.   

    sp_changeobjectowner 'db_owner.Customers','dbo'
      

  2.   

    你sp_changeobjectowner 'Customers','db_owner'之后,Customers就属于sb_owner了,访问就要采用server.dbname.db_owner.Customers了要再改回来就要sp_changeobjectowner 'db_owner.Customers','dbo'。
      

  3.   

    sa是帐户,db_owner是角色
    语法:
    sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'
    前一个参数是需要更改的表,后一个参数是更改后的所有者
    另外
    只有 sysadmin 固定服务器角色和 db_owner 固定数据库角色成员,或既是 db_ddladmin 固定数据库角色又是 db_securityadmin 固定数据库角色的成员,才能执行 sp_changeobjectowner。
      

  4.   

    2.
    这样改:
    sp_changeobjectowner 'db_owner.Customers','dbo' ----因为执行sp_changeobjectowner 'Customers','db_owner'之后,customers的所有者为db_owner了
      

  5.   

    3.sp_changeobjectowner 是更改数据库中对象的所有者。所以当你用错时,再把该对象的所有者改回旧的就行了sp_changeobjectowner '对象','所有者' --注:若对象的所有者不是当前登陆,则必须在对象前加所有者 ,如:'db_owner.Customers'表示Customers的所有者为db_owner
      

  6.   

    --如果对象名不加所有者的话,默认的就是dbo,所以你改回来的话会出现错误.加上对象的所有者就对了.--sa是登陆服务器的账号.dbo是访问数据库的帐号.必须把登陆帐号和数据库帐号对应起来.默认的sa影射到各个数据库的dbo.而切如果是sysadmin固定服务器角色成员的话也会影射到dbo这个帐号上.这个帐号是自动添加的,并且不能被删除.