vista rapidas para optimizar mas lenta grandes datos cuello consultas cantidades botella c# .net sql-server ado.net

c# - rapidas - ¿Cómo obtengo una lista de todos los esquemas en una base de datos de servidor Sql?



optimizar vista sql server (5)

Para 2005 y más adelante, ambos darán lo que estás buscando.

SELECT name FROM sys.schemas SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA

Para 2000, esto dará una lista de las bases de datos en la instancia .

SELECT * FROM INFORMATION_SCHEMA.SCHEMATA

Esa es la "incompatibilidad hacia atrás" notada en la respuesta de @ Adrift.

En SQL Server 2000 (y versiones anteriores), no existen realmente "esquemas" como tales, aunque puede usar roles como espacios de nombres de forma similar. En ese caso, este puede ser el equivalente más cercano.

SELECT * FROM sysusers WHERE gid <> 0

Quiero recuperar una lista de todos los esquemas en una base de datos de servidor Sql determinada. Utilizando la API de recuperación de esquemas de ADO.NET , obtengo una lista de todas las colecciones, pero no hay ninguna colección para ''Esquemas''. Podría atravesar las colecciones de ''Tables'' , ''Procedures'' (y otras si es necesario) y obtener una lista de nombres de esquema únicos, pero ¿no hay una manera más fácil / más corta de lograr el mismo resultado?

Ejemplo: Para la base ''AdventureWorks'' datos ''AdventureWorks'' estándar también me gustaría obtener la siguiente lista: dbo,HumanResources,Person,Production,Purchasing,Sales (he omitido los otros nombres de esquemas estándar como db_accessadmin , db_datareader , etc.)

Editar: puedo obtener la lista de esquemas consultando la vista del sistema - INFORMATION_SCHEMA.SCHEMATA pero preferiría usar la API de esquema como primera opción.


Pruebe esta consulta aquí:

SELECT * FROM sys.schemas

Esto le dará el nombre y schema_id para todos los esquemas de definición en la base de datos donde lo ejecuta.

Realmente no sé a qué te refieres al consultar la "API de esquema": estos sys. las vistas de catálogo (en el esquema sys ) son su mejor opción para cualquier información de sistema sobre bases de datos y objetos en esas bases de datos.


Si está utilizando Sql Server Management Studio, puede obtener una lista de todos los esquemas, crear su propio esquema o eliminar uno existente navegando a:

Bases de datos - [Su base de datos] - Seguridad - Esquemas


También puede consultar la vista INFORMATION_SCHEMA.SCHEMATA:

SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA

Creo que se recomienda consultar las vistas INFORMATION_SCHEMA ya que lo protegen de los cambios en las tablas sys subyacentes. De la ayuda de SQL Server 2008 R2:

Las vistas del esquema de información proporcionan una vista interna, independiente de la tabla del sistema, de los metadatos de SQL Server. Las vistas del esquema de información permiten que las aplicaciones funcionen correctamente aunque se han realizado cambios significativos en las tablas del sistema subyacentes. Las vistas del esquema de información incluidas en SQL Server cumplen con la definición estándar ISO para INFORMATION_SCHEMA.

Irónicamente, esto va inmediatamente precedido por esta nota:

Se han realizado algunos cambios en las vistas del esquema de información que rompen la compatibilidad con versiones anteriores. Estos cambios se describen en los temas para las vistas específicas.


SELECT s.name + ''.'' + ao.name , s.name FROM sys.all_objects ao INNER JOIN sys.schemas s ON s.schema_id = ao.schema_id WHERE ao.type=''u'';