sql server - usuario - Error del servidor SQL: "%" no es una restricción. No se pudo quitar la restricción. Ver errores anteriores
sql server 2008 r2 no se instala en windows 10 (1)
Estoy usando Microsoft SQL Server 2005, y soy relativamente nuevo en SQL en general.
Existe una relación entre dos tablas, "Recursos" y "Recursos de grupo", en la base de datos "Información". Resources tiene una clave externa, "id", en Group_Resources, llamada "resource_id". Hay una restricción de clave externa, "fk_gr_res_resources", entre los dos.
Estoy establecido como el propietario de la base de datos, y tengo permisos completos de lectura / escritura / creación / eliminación.
Quiero eliminar la restricción de clave externa, por lo que ejecuté la siguiente consulta:
ALTER TABLE [Information].[group_resources] DROP CONSTRAINT fk_gr_res_resources
y recibió el siguiente error:
''fk_gr_res_resources'' no es una restricción. No se pudo quitar la restricción. Ver errores anteriores.
Estoy confundido, porque es una restricción y no hay errores de ortografía. ¿Voy a eliminar esto incorrectamente? ¿Estoy eliminando la restricción de la tabla incorrecta? Cualquier sugerencia sería muy apreciada, y por favor no me llames: después de todo, soy nuevo en SQL.
Usted está recibiendo este error:
Msg 3728, Level 16, State 1, Line 1
''fk_gr_res_resources'' is not a constraint.
Msg 3727, Level 16, State 0, Line 1
Could not drop constraint. See previous errors.
¡Porque la restricción FK no existe!
¿Está seguro de que la Information
es el nombre de esquema correcto y no dbo
?
1. Este SQL probará que el FK no existe:
SELECT * FROM sysobjects WHERE name = ''fk_gr_res_resources''
2. Vaya, me equivoqué en mi respuesta original, aquí está la sintaxis correcta para SQL Server:
ALTER TABLE <table_name>
DROP CONSTRAINT <foreignkey_name>
3. Ejemplo para su base de datos:
IF EXISTS (SELECT * FROM sysobjects WHERE name = ''fk_gr_res_resources'')
BEGIN
ALTER TABLE Group_Resources
DROP CONSTRAINT fk_gr_res_resources
END;
4. Intenta ejecutar esto:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = ''fk_gr_res_resources'')
BEGIN
ALTER TABLE Group_Resources
ADD CONSTRAINT fk_gr_res_resources
FOREIGN KEY (resource_id)
REFERENCES Resources(id) /* make sure Resources.id is a PRIMARY KEY */
END;
5. Luego intente esto y vea si todavía obtiene ese error:
ALTER TABLE Group_Resources
DROP CONSTRAINT fk_gr_res_resources
La otra sintaxis fue para MySQL, lo siento:
ALTER TABLE <table_name>
DROP FOREIGN KEY <foreignkey_name>
Gracias por corregirme OMG Ponies!