usuario tipos tipo ruta permisos para guardar extension datos dato dar archivos archivo sql-server svn samba vfs

tipos - Exponer objetos de base de datos de SQL Server como archivos en un sistema de archivos



tipo de dato para guardar un archivo en sql server (6)

en un nivel muy simplista, podría escribir un servicio de Windows que vigile el sistema de archivos y analizar los archivos en un directorio de aprticuler y los aplique a la base de datos. Un mechinsim similar que utiliza el intermediario del servidor SQL (o simplemente desencadenadores y xp_commandshell) podría usarse para escribir el reverso.

Hay más de un sistema de archivos

La mayoría de las herramientas de control de versiones operan en el sistema de archivos del disco local.

Los objetos de base de datos para la mayoría de los sistemas de bases de datos relacionales existen en un sistema de archivos, en la medida en que hay un nombre textual que identifica el objeto y el script de creación puede ser recuperado o al menos generado usando este nombre.

Pero no es el sistema de archivos de disco local, y como resultado son invisibles para herramientas como CVS o SVN, que operan estrictamente en el sistema de archivos de disco local.

Para que SVN se aplique a los objetos de la base de datos, se deben replicar en el sistema de archivos del disco local, y los cambios en el sistema de archivos del disco local se deben replicar en la base de datos.

Diferente modo de uso

A diferencia del código fuente, del cual cada desarrollador mantiene una copia de trabajo privada, los desarrolladores tienden a trabajar en una base de datos compartida en un servidor en algún lugar de la red. Si bien Visual Studio proporciona soporte directo para copias de la base de datos de proyectos de montaje a pedido, los desarrolladores han evitado esta función porque no existe una manera conveniente y confiable de fusionar los cambios.

Sin embargo, una vez que los cambios en la estructura de la base de datos se gestionan mediante un sistema de control de versiones copy-merge como CVS o SVN, la propagación y la fusión serán en su mayoría automáticas (conflictos de barras) y ya no existe motivo para compartir una base de datos.

Descartar SCC como una opción

Microsoft SQL Management Studio admite control de versiones para cualquier cosa que implemente las especificaciones SCC. Microsoft solo muestra VSS (blech) pero Google revela una gran cantidad de opciones. Sin embargo , SCC se trata de bloquear - blech doble.

Replicación entre sistemas de archivos

Toda la cuestión ahora pasa a una de replicar entre sistemas de archivos. CodePlex contiene una implementación para VS2005 / SQL2005 pero no funciona con VS2008 / SQL2008.

En este punto, creo que la cuestión subyacente de "cómo debería hacerlo" ha sido abordada satisfactoriamente, aunque no estoy seguro de cómo otorgar puntos.

Gracias a todos los interesados ​​por su aporte.

Surgen algunas preguntas concretas, principalmente relacionadas con la forma de secuencia de comandos de varios tipos de objetos de esquema.

  • Cómo extraer create y alter scripts en orden de dependencia para
    • mesa
    • ver
    • procedimiento almacenado
    • función
    • desencadenar
    • índice
    • clave externa
  • Cómo extraer scripts de población de tablas en orden de dependencia
  • Cómo detectar de manera eficiente los cambios en el esquema (en ausencia de desencadenantes en sys.objects , será necesario realizar una encuesta, lo que debería ser más rápido y económico)

Detectando cambios

Me llamó la atención que es posible vincular acciones a cambios en el esquema mediante políticas. Quedan las preguntas sobre el orden de dependencia y cómo guiar una declaración de creación de tabla


Usamos Red Gate para comparar el esquema actual con los archivos con guiones almacenados en SVN para líneas de base, control de versiones, etc.

Sin embargo, nuestra referencia maestra es en realidad una copia restaurada de la producción. Esta es nuestra línea de base y debería corresponder a SVN. Es parte del proceso de implementación para enviar las secuencias de comandos maestras a SVN, lo que Red Gate hace de manera útil: solo cambia los archivos para los objetos cambiados.

Además, separamos nuestras secuencias de comandos de trabajo y las secuencias de comandos de lanzamiento (solo cambios), por lo que siempre tenemos una base de datos maestra y una línea de base en SVN. Sin embargo, solo usamos scripts para el desarrollo.

El control de origen de la base de datos es bueno, pero es difícil de implementar debido a la naturaleza de lo que es un objeto SQL Server: una fila o 3 en algunas tablas ...


wrt los cambios hechos directamente en el servidor SQL por otros usuarios: no sé qué tan práctico es esto para usted, pero puede ser una buena idea hacer TODOS los cambios a través de scripts SQL, no individualmente, directamente en el servidor. Estos scripts SQL se pueden numerar y colocar en el control de origen de su elección. Para obtener un control más preciso de los cambios implementados, puede hacer que cada script de cambio se vincule con un script de reversión que se puede usar si es necesario.

Por supuesto, tendrá que educar a los usuarios, poner algunos controles en su lugar, etc., y también ajustar el proceso de implementación para que solo los cambios aprobados fluyan al entorno de la base de datos a través de los scripts. Solo un pensamiento.


¿Necesitas necesariamente rastrear CADA cambio realizado en un objeto o solo el último? Escribimos una solución en C # que funciona contra TFS en el sentido de que tenemos una línea de base de todos los objetos SQL en la base de datos y luego usamos los métodos de Microsoft.SqlServer.Management.Smo, pasamos por cada objeto de base de datos y comparamos el ''conjunto de trabajo'' ''a la versión del servidor. Lo ejecutamos por la noche como parte de nuestro procesamiento nocturno y lleva aproximadamente 15 minutos pasar por todo el servidor de 9 bases de datos. Descubrimos que funciona muy bien, no implica ninguna modificación directa en servidores / bases de datos SQL y funciona para SQL 2005/2008. Genera un informe que se envía por correo a la administración de nuestra base de datos, que les permite saber qué objetos han cambiado, luego les permite ir a través de TFS y ver qué es.

Originalmente había comenzado aquí; http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-change-scripts.aspx

pero descubrí que lo que estaba buscando no era tanto una forma de impulsar cambios a un servidor sino simplemente conocer los cambios. El enlace del blog tiene algunas sugerencias decentes, podría ser útil con suerte.

Saludos.


Durante los últimos seis meses más o menos he estado desarrollando una herramienta llamada ShiftSchema que creo que es relevante para su pregunta.

ShiftSchema utiliza desencadenadores de base de datos para sincronizar objetos de base de datos de SQL Server 2005 y 2008 con archivos en disco que son adecuados para almacenar en un sistema de control de versiones. También supervisa el sistema de archivos en busca de cambios (cuando actualiza desde el repositorio y obtiene cambios de esquema confirmados por otro desarrollador) e inserta esos cambios en su base de datos de desarrollo personal.

Sí admite la sincronización de datos, pero esa función está realmente dirigida a pequeñas cantidades de datos, como tablas de búsqueda.

También tiene una función para comparar dos bases de datos (ya sea en el RDBMS o en el disco) y generar un script DDL para sincronizarlos.

ShiftSchema está destinado a ser utilizado en un entorno de desarrollo donde cada desarrollador tiene su propia base de datos de desarrollo personal.

Si está interesado, el enlace del sitio web en mi perfil apunta al sitio ShiftSchema.


Red Gate está creando SQL Source Control, integrándose con SSMS para proporcionar tanto el compromiso como la recuperación desde el control de código fuente (en el fondo vinculamos los objetos de la base de datos a los respectivos archivos SQL de creación mantenidos en el control de código fuente). Aunque recomendamos que cada desarrollador use su propia copia de desarrollo de la base de datos, planeamos respaldar el modelo por el que se comparte, aunque esto tiene el inconveniente de que cualquier desarrollador puede romper la base de datos para todos en cualquier momento.

Esperamos lanzar la herramienta en la primera mitad de 2010. Si desea obtener más información o registrarse en nuestro Programa de acceso anticipado, visite el siguiente enlace:

http://www.red-gate.com/products/SQL_Source_Control/index.htm

Saludos cordiales,

David Atkinson, Product Manager, Red Gate Software