过程 sp_addextendedproperty 对象无效。'guest.tb_resource_key.ResourceNo' 不允许有扩展属性,或对象不存在
时间: 2024-02-16 17:03:36 浏览: 120
这个错误提示是因为 `sp_addextendedproperty` 存储过程无法向 `guest.tb_resource_key.ResourceNo` 对象添加扩展属性,可能是因为该对象不存在或不支持添加扩展属性。请确保要添加扩展属性的对象存在,并且在使用 `sp_addextendedproperty` 存储过程时正确指定了对象的名称及其级别。
如果确认对象存在并且名称及级别正确,可以尝试检查该对象是否支持添加扩展属性。例如,可以使用以下查询检查表格是否支持添加扩展属性:
```sql
SELECT OBJECTPROPERTY(OBJECT_ID('guest.tb_resource_key'), 'TableHasExtendedProperties')
```
如果返回值为 1,则表示该表格支持添加扩展属性。如果返回值为 0,则表示该表格不支持添加扩展属性。
如果确定对象存在、名称及级别正确,并且该对象支持添加扩展属性,但仍然无法添加,请检查是否具有足够的权限来执行该操作。可能需要使用具有足够权限的登录账户来执行 `sp_addextendedproperty` 存储过程。
相关问题
过程 sp_addextendedproperty
`sp_addextendedproperty` 是 SQL Server 中的一个系统存储过程,用于向数据库、表格、列或其他数据库对象添加扩展属性。它的语法如下:
```sql
sp_addextendedproperty
[@name =] 'property_name',
[@value =] 'property_value',
[@level0type =] 'level0_object_type',
[@level0name =] 'level0_object_name',
[@level1type =] 'level1_object_type',
[@level1name =] 'level1_object_name',
[@level2type =] 'level2_object_type',
[@level2name =] 'level2_object_name'
```
其中,`@name` 和 `@value` 参数分别指定要添加的属性名称和属性值。`@level0type`、`@level0name`、`@level1type`、`@level1name`、`@level2type`、`@level2name` 参数用于指定要添加属性的对象及其级别。例如,要向表格 `dbo.mytable` 添加一个名为 `description` 的属性,可以使用以下命令:
```sql
EXEC sp_addextendedproperty
@name = N'description',
@value = N'This is my table',
@level0type = N'Schema',
@level0name = N'dbo',
@level1type = N'Table',
@level1name = N'mytable';
```
这将在 `dbo.mytable` 表格上添加一个名为 `description` 的属性,属性值为 `This is my table`。
sqlserver中 给字段添加注释时报错 对象无效。'dbo.sys_order.CreatorId' 不允许有扩展属性,或对象不存在。怎么解决
在SQL Server中,给字段添加注释需要使用扩展属性(Extended Property)。但是有时候会遇到对象无效的错误,可能是由于对象不存在或者不允许添加扩展属性。
要解决这个问题,可以按照以下步骤进行操作:
1. 确保要给字段添加注释的表和字段存在。可以使用以下查询语句验证:
```sql
SELECT * FROM sys.tables WHERE name = 'YourTableName'
```
```sql
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('YourTableName') AND name = 'YourColumnName'
```
2. 确保当前用户有足够的权限来添加扩展属性。需要具备ALTER权限或者有sysadmin角色的权限。
3. 使用sp_addextendedproperty存储过程来添加扩展属性。以下是添加字段注释的示例代码:
```sql
EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = N'Your field description',
@level0type = N'SCHEMA', @level0name = 'dbo',
@level1type = N'TABLE', @level1name = 'YourTableName',
@level2type = N'COLUMN', @level2name = 'YourColumnName';
```
请确保将 'YourTableName' 替换为实际的表名,'YourColumnName' 替换为实际的字段名,并在 @value 参数中提供适当的字段描述。
如果仍然遇到问题,请检查数据库和表的完整性,确保没有任何损坏或错误。你还可以尝试重新创建表或重启数据库服务器来解决问题。
阅读全文