使用SSMS数据库管理工具修改数据

批量修改:
EXEC sp_MSforeachtable ‘exec sp_changeobjectowner ”?”,”dbo” ‘
单个修改:
exec sp_changeobjectowner ‘要改的表名’,’dbo’

当用sp_adduser 对数据库进行添加用户之后.却出现了此对象 ‘表名’
无效的现象?

修改数据列

在开发和生产过程中,列名的拼写错误或者列名的更改是需要操作数据表的,大多数情况下都是不需要修改的.

以下几种情况下我们并不能直接修改数据列:

1、用于索引的列。 
2、用于 CHECK、FOREIGN KEY、UNIQUE 或 PRIMARY KEY 约束的列。 
3、与默认值(由 DEFAULT 关键字定义)相关联的列,或绑定到默认对象的列。 
4、绑定到规则的列。 

修改任意一条或者多条都可以

1:打开数据库,选择数据表,右键点击-》编辑所有行(如未配置,点击编辑前200行)。

金沙国际官网 1

2、编辑需要修改的数据-》编辑完成后,右键点击空白处-》选择执行SQL即可编辑成功。

金沙国际官网 2

只有所有者才能更改表的所有者

金沙国际官网,执行这个语句,就可以把当前库的所有表的所有者改为dbo
exec sp_msforeachtable ‘sp_changeobjectowner ”?”, ”dbo”’

使用SSMS数据库管理工具修改列

1、连接数据库,打开要修改的数据库,选择数据表-》右键点击-》选择设计。

金沙国际官网 3

2、在新打开的窗口视图中-》点击要修改的行-》可以修改列名、列类型、是否可空、属性等-》修改完成点击保存按钮(或者ctrl+s)。

金沙国际官网 4

使用T-SQL脚本修改数据

有很服务器:   消息   15001,级别   16,状态   1,过程  
sp_changeobjectowner,行   38  
  对象   ‘user’   不存在或不是对此操作有效的对象。  
多表是导入的 一些所有者的密码都不记得就会产生
觉得是不是没有原来的所有者 我加了一下 嘿嘿 正常!
exec sp_changeobjectowner ‘表所有者.要改的表名’,’dbo’
就不需表的所有者才能修改了

批量修改:将所有属于 www_domain_com 的表换成 dbo
EXEC sp_MSforeachtable ‘exec sp_changeobjectowner
”www_domain_com”,”dbo” ‘

使用T-SQL脚本修改列

修改单表中一行单列或者多列数据

语法:update 表名 set 列名1=值,列名2=值
where 条件;

示例一:update test1  set age=’21’ where
id=’1′;

示例结果:

金沙国际官网 5

单个修改:
exec sp_changeobjectowner ‘要改的表名’,’dbo’

修改列名

语法:exec sp_rename 
表明.旧列名,新列名; 

示例:exec sp_rename
‘[test1].height6′,’height7’; 

金沙国际官网 6

金沙国际官网 7

修改单表中多行一列或多列数据

语法:update top(数量) 表名
set 列名1=值,列名2=值2 where 条件;

示例:

update test1 set age=’23’ where id in
(‘1′,’2’);

update test1 set age=’22’ where id between
‘3’ and ‘4’;

update test1 set age=’23’ where id>=’5′
and id <=’6′;

update top(2) test1 set age=’23’ where
id>=’5′;

update test1 set age=’23’ where test1.id
in (select top(2) id from test1 order by id desc);

示例结果:

金沙国际官网 8

金沙国际官网 9

在企业管理器里.选择该表—–>设计表——>在相当属性里可以更改表的所有者(变为dbo)

修改列数据类型

语法:alter table 数据库名.dbo.表名 alter
column 列名 类型 [约束];  

示例:alter table [testss].dbo.[test1]
alter column height7 int null;  

金沙国际官网 10

金沙国际官网 11

多表关联修改表中数据

语法:update 表1 set 表1.列1=值,表1.列2=值
from 表1 as a,表2 as b where a.列名=b.列名;

示例:update test1 set
test1.name=’李华’,test1.sex=’女’ from test1 as a,test2 as b where
a.classid=b.id;

示例结果:

 金沙国际官网 12

金沙国际官网 13

–如果是要用户表/存储过程/视图/触发器/自定义函数一齐改,则用游标(不要理会错误提示)

修改列是否可空

语法:alter table 数据库名.dbo.表名 alter
column 列名 类型 约束;  

示例:alter table [testss].dbo.[test1]
alter column height7 int not null;

金沙国际官网 14

金沙国际官网 15

总结:修改数据表数据,灵活组合修改数据列,数据源,查询条件是关键。

 

declare tb cursor local for

修改列默认值

如果默认值不存在

语法:alter table 数据库名.dbo.表名 add
constraint 约束名 default 默认值 for 列名;

示例:alter table [testss].dbo.[test1]
add constraint df_h default 1 for height7;

金沙国际官网 16

金沙国际官网 17

select ‘sp_changeobjectowner
”[‘+replace(user_name(uid),’]’,’]]’)+’].[‘

如果默认值存在

语法:

–第一步判断默认值否存在,如果存在就删除,如果不存在则不删除
if exists (select * from
sys.check_constraints where object_id = object_id(默认值约束名) and
parent_object_id = object_id(表名))
alter table 表名 drop constraint
默认值约束名

–第二步添加默认值

alter table 表名 add constraint  约束名
default 默认值 for 列名;

示例:

–第一步判断约束是否存在,如果存在就删除,如果不存在则不删除
if exists (select * from
sys.check_constraints where object_id = object_id(‘df_h’) AND
parent_object_id = object_id(‘[testss].dbo.[test1]’))
alter table [testss].dbo.[test1] drop
constraint df_h

–第二步添加默认值

alter table [testss].dbo.[test1] add
constraint df_h default 2 for height7;

金沙国际官网 18

+replace(name,’]’,’]]’)+’]”,”dbo”’

总结

在开发或者生产数据库中,数据列一经建好,不要轻易改动,随意改动可能会引起数据库的级联操作失败和代码错误。

 

from sysobjects

where xtype in(‘U’,’V’,’P’,’TR’,’FN’,’IF’,’TF’) and status>=0

open tb

declare @s nvarchar(4000)

fetch tb into @s

while @@fetch_status=0

begin

exec(@s)

fetch tb into @s

end

close tb

deallocate tb

go

 

  1. sp_changeobjectowner

更改当前数据库中对象的所有者。

 

语法

sp_changeobjectowner [ @objname = ] ‘object’ , [ @newowner = ]
‘owner’

 

参数

[@objname =] ‘object’

 

当前数据库中现有的表、视图或存储过程的名称。object 的数据类型为
nvarchar(517),没有默认值。object 可用现有对象所有者限定,格式为
existing_owner.object。

 

[@newowner =] ‘owner’

 

即将成为对象的新所有者的安全帐户的名称。owner 的数据类型为
sysname,没有默认值。owner 必须是当前数据库中有效的 Microsoft? SQL
Server? 用户或角色或 Microsoft Windows NT? 用户或组。指定 Windows NT
用户或组时,请指定 Windows NT 用户或组在数据库中已知的名称(用
sp_grantdbaccess 添加)。

 

返回代码值

0(成功)或 1(失败)

 

注释

对象所有者(或拥有对象的组或角色的成员)对对象有特殊的权限。对象所有者可以执行任何与对象有关的
Transact-SQL 语句(例如 Insert、Update、Delete、Select 或
EXECUTE),也可以管理对象的权限。

 

如果拥有对象的安全帐户必须要除去,但同时要保留该对象,请使用
sp_changeobjectowner
更改对象所有者。该过程从对象中删除所有现有权限。在运行
sp_changeobjectowner 之后,需要重新应用要保留的任何权限。

 

由于这个原因,建议在运行 sp_changeobjectowner
之前,编写现有权限的脚本。一旦更改了对象的所有权,可能要使用该脚本重新应用权限。在运行该脚本之前需要在权限脚本中修改对象所有者。有关编写数据库脚本的更多信息,请参见编写数据库文档和脚本。

 

可以使用 sp_changedbowner 更改数据库的所有者。

 

权限

只有 sysadmin 固定服务器角色和 db_owner 固定数据库角色成员,或既是
db_ddladmin 固定数据库角色又是 db_securityadmin
固定数据库角色的成员,才能执行 sp_changeobjectowner。

 

示例

下面的示例将 authors 表的所有者改为 Corporate/GeorgeW。

 

EXEC sp_changeobjectowner ‘authors’, ‘Corporate/GeorgeW’

 

 

请参见

改变数据库所有者:sp_changedbowner

 

------------------------------以上摘自sql
server 的联机丛书

注意:

使用sqlserver2000改变对象(object)(如Table,SP,View)的所有者(owner)时,需要注意一点:

如果对象改变前的owner为dbo,则直接用:exec sp_changeobjectowner
对象名,新的所有者名就可以成功。如果再需要改变该对象的所有者,则要用如下语法:

exec sp_changeobjectowner
“[所有者].[对象名]”,新的所有者。注意,双引号不可省略,否则提示objectname
does not exist。

 

EXEC sp_changeobjectowner ‘cqadmin.authors’, 111

 

2.建与原表结构相同表,然后把数据从原表插入到新表,操作方法:

 

在sql
server企业管理器中选择原表点右键,选择“所有任务/生存SQL脚本”,保存生成的脚本,在脚本中把表的原所有者改成新所有者。然后再把该脚本运行一遍,数据库中就新生成了一个表,所有者是新所有者,原来的表还在数据库中没有被替换。新表和旧表
表名相同,所有者不同,此时的新表中没有数据。

然后再运行下面的语句往新表中插入数据:

Insert INTO CQAdmin.m_actiondef //新所有者.新表名

Select *

FROM RegaltecDefSchema. CQAdministrator.m_actiondef //
数据库名.旧所有者.旧表名

运行完了就做完了,可以把旧表删掉,也可以留着。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图