Estoy tratando de soltar una mesa pero recibo el siguiente mensaje:
Msg 3726, nivel 16, estado 1, línea 3
No se pudo quitar el objeto 'dbo.UserProfile' porque hace referencia a una restricción FOREIGN KEY.
Msg 2714, nivel 16, estado 6, línea 2
Ya existe un objeto llamado 'UserProfile' en la base de datos.
Miré a mi alrededor con SQL Server Management Studio pero no puedo encontrar la restricción. ¿Cómo puedo averiguar las restricciones de clave externa?
sql
sql-server
sql-server-2008
marc_s
fuente
fuente
Worth noticing:
La respuesta de @LittleSweetSeas devolverá información sobre las claves externas PARA una tabla referenciada determinada , sin embargo, los detalles de respuesta de @ Gayathri-Varma para una tabla principal determinada . Ambos son útiles en diferentes contextos y ambos ganan su propia carrera :-)Respuestas:
Aquí está:
De esta manera, obtendrá la tabla de referencia y el nombre de la columna.
Editado para usar sys.tables en lugar de sys.objects genéricos según la sugerencia de comentario. Gracias, marc_s
fuente
sys.tables
en lugar desys.objects
INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id
conINNER JOIN sys.tables t ON t.OBJECT_ID = fc.referenced_object_id
Otra forma es comprobar los resultados de
(o simplemente resalte el TableName citado y presione ALT + F1)
Con el paso del tiempo, decidí refinar mi respuesta. A continuación se muestra una captura de pantalla de los resultados que
sp_help
proporciona. A han utilizado la base de datos AdventureWorksDW2012 para este ejemplo. Allí hay mucha información buena, y lo que estamos buscando está al final, resaltado en verde:fuente
Prueba esto
fuente
name
valor devuelto es un nombre interno (creo), y no el nombre real de la columna en la tabla principal. Cualquier forma de arreglar esto?ParentTableName
siempre sería el mismo que el dado 'Tablename
' en la cláusula where (si se incluye). Esto puede ser intencional y será más útil cuando se le solicite más de una tabla.Encontré esta respuesta bastante simple e hice el truco para lo que necesitaba: https://stackoverflow.com/a/12956348/652519
Un resumen del enlace, use esta consulta:
Rápido y sencillo. Pude ubicar todas las tablas de claves externas, las columnas respectivas y los nombres de claves externas de 15 tablas con bastante rapidez.
Como @mdisibio señaló a continuación, aquí hay un enlace a la documentación que detalla los diferentes parámetros que se pueden usar: https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp- fkeys-transact-sql
fuente
EXEC sp_fkeys 'Payroll', 'accounting'
Estoy usando este script para encontrar todos los detalles relacionados con la clave externa. Estoy usando INFORMATION.SCHEMA. A continuación se muestra un script SQL:
fuente
si desea ir a través de SSMS en la ventana del explorador de objetos, haga clic con el botón derecho en el objeto que desea soltar, vea las dependencias.
fuente
Esta es la mejor manera de averiguar la relación de clave externa en toda la base de datos.
y una forma mas
fuente
exec sp_helpconstraint 'Table Name'
es la única que me devuelve filas. Sin embargo, el nombre de la restricción es un galimatías.PRIMARY KEY (clustered) PK__org_soft__3213E83FE6B07364
fuente
- Lo siguiente puede darle más de lo que está buscando:
fuente
También puede devolver toda la información sobre el
Foreign Keys
adaptando la respuesta de @LittleSweetSeas:fuente
En SQL Server Management Studio, puede hacer clic derecho en la tabla en el explorador de objetos y seleccionar "Ver dependencias". Esto le daría un buen punto de partida. Muestra tablas, vistas y procedimientos que hacen referencia a la tabla.
fuente
prueba la siguiente consulta.
esto dará el nombre_restricción, los nombres_de_columna que serán de referencia y las tablas que dependerán de la restricción estarán allí.
fuente
Puede utilizar esta consulta para mostrar
Foreign key
constaraints:Tomado de http://blog.sqlauthority.com/2006/11/01/sql-server-query-to-display-foreign-key-relationships-and-name-of-the-constraint-for-each-table- en la base de datos /
fuente
La forma más fácil de obtener
Primary Key
yForeign Key
para una mesa es:fuente
En el Explorador de objetos, expanda la tabla y expanda las claves:
fuente