Solución: Mensaje 5094 o 4922 al modificar una columna en SQL Server

Cuando intentas modificar el tipo de dato de una columna en SQL Server con una instrucción ALTER COLUM, podría ocurrir que te de un error/mensaje:

5074 - El objeto 'DF_Tabla_Columna' de tipo objeto es dependiente de columna 'Columna'.

Donde DF_Tabla_Columna, es el nombre de la restricción y Columna es el nombre de la columna.

Significa que hay una restricción asociada a la columna que intentas modificar. También te puede dar el siguiente error:

Error de ALTER TABLE ALTER COLUMN ### debido a que uno o más objetos tienen acceso a esta columna.

De nuevo, el mismo significado.

¿Cómo solucionarlo?

Debes primero eliminar la restricción asociada. Suponiendo que tu restricción se llame: DF_Tabla_Columna debes ejecutar la instrucción:

ALTER TABLE tabla DROP CONSTRAINT DF_Tabla_Columna

Y ahora sí ejecuta, la instrucción ALTER COLUM.

Ten en cuenta que debes restaurar o volver a crear la restricción que eliminaste. Puedes hacerlo con la instrucción:

ALTER TABLE tabla ADD CONSTRAINT [...]

SQL Operations Studio – Un Mini SQL Magement Studio multiplataforma

SQL Magement Studio es genial, pero no es multiplataforma. Ahora que MS SQL Server corre también sobre Linux toca buscar herramientas para controlarlo mediante una GUI. SQL Operations Studio es justamente eso. Te permite conectarte a MS SQL Server, y manipular alguna funciones básicas. Respaldar tu base de datos, restaurar, realizar consultas con tipado inteligente y más funciones, básicas pero sumamente útiles.

Puedes ver el anuncio completo y las novedades en el Blog de SQl Server.

Puedes Descargar SQL Operations Studio desde este enlace.

Hay versión para Windows, Mac y Linux. Basta con descomprimir la carpeta y ejecutar el archivo: sqlops.exe para empezar a utilizarlo.

 

 

Instalar SQL Server 2014 Express en Windows 7

De pronto se pone complicado instalar SQL Server 2014 Express en Windows 7 que hasta llegas a pensar que no es posible. Dado que el enlace de error no da muchos detalles para solucionar los problemas de incompatibilidad, aquí te dejo una paqueña guía:

  1. Actualizar Windows 7, particularmente asegúrate de que tengas el Service Pack 1
  2. Descargar SQL Server Express 2014 SP1
  3. Cambiar la ubicación en Configuración regional y de idioma a Español (España)
  4. Ejecutar el instalador de SQL Express 2014 hasta finalizar el proceso
  5. Cambiar la ubicación en Configuración regional y de idioma a la de tu conveniencia
  6. Ser feliz.

 

Si piensas que esta pequeña guía es inutil, piensa que en realidad es una guía dirigida a mi yo del futuro, porque luego se me olvida, pero lo hago público por si a álguien más le puede servir.

Saludos Ruperto del futuro.

Solución: Esta versión de backend no admite el diseño de tablas o diagramas de base de datos.

Microsoft SQL Server Management Studio puede llegar a dar el error:

“Esta versión de backend no admite el diseño de tablas o diagramas de base de datos. (MS Visual Database Tools)”

errorMSSMS

Lo cual no permite que hagas ningún tipo de modificación a tu base de datos.

Solución:

Ocurre porque la versión de Microsoft SQL Server Management Studio que tiene instalada es menor que la versión del SQL Server. Por ejemplo, puede que la versión del Management que tengas sea la 2012 y tu SQL Server sea 2014.

Para solucionarlo, descarga e instala la misma versión (o mayor) de Microsoft SQL Server Management Studio.

Puedes comprobar la versión del Management en el menú ayuda y luego “Acerca de”. La versión del SQL Server la puede ver ejecutando el comando:

SELECT @@version

Modificar una Vista de SQL Server desde VBA en Access y mostrarla

Recientemente me ví en la necesidad de tener una vista con contenido ‘a petición’ del usuario, que bien puede ser de una sola tabla o de muchas, usando como base una instrucción en SQL Server.

Abrir una tabla desde VBA en Access es sencillo, para ello existe la instrucción:

DoCmd.OpenTable "NombreTabla", acViewNormal

Donde:

DoCmd.OpenTable es la instrucción

NombreTabla es un parámetro donde le indiques el nombre de la tabla

acViewNormal es un segundo parámetro para indicarle en que modo se abrirá la tabla. En este caso ‘Normal’

 

Ahora bien, nuestra misión será editar una consulta/vista desde VBA en Access, pero si no existe habrá que crearla y luego abrirla en vista tabla.

Estos son los pasos a seguir:

1 – Crear la consulta, si existe, regresará un error y entonces pasaremos a editarla.

2 – Luego de crearla o editarla, refrescar el enlace a la BD de SQL Server, porque si no hacemos este paso, la vista/consulta editada, saldrá con el contenido anterior y parecerá que nuestro método de edición ha fallado. Esto se soluciona dando clic en el area de objetos de Access y presionando F5, pero nosotros lo haremos desde VBA.

La función para Crear o Editar la vista es la siguiente:

Function CrearEditarVista(strNombreVista As String, strSQLBase As String) As Boolean
    Dim iSQL As String
    
    'le indicamos que si hay un error continúe'
    On Error Resume Next
    'Esta instrucción SQL crea la vista en SQL Server'
    iSQL = "CREATE VIEW " & strNombreVista & " AS " & strSQLBase
    
    Err.CLEAR
    CurrentProject.connection.Execute iSQL
    
    If Err.number = 0 Then 'Si no hubo error'
        'Se creó la vista :D, Devolvamos True'
        CrearEditarVista = True
    ElseIf Err.number = -2147217900 Then 'Este error significa que ya existe la vista. Entonces a editarla'
        iSQL = "ALTER VIEW " & strNombreVista & " AS " & strSQLBase
        Err.CLEAR
        CurrentProject.connection.Execute iSQL
        If Err.number Then GoTo MANEJA_ERROR 'Si genera error, anunciar el error'
        'Nuesta función, funcionó :D, retornemos True'
        CrearEditarVista = True
    Else
        GoTo MANEJA_ERROR
    End If
    Exit Function
MANEJA_ERROR:
    MsgBox "[" & Err.number & "] - [" & Err.description, vbCritical, "Error"
    CrearEditarVista = False
End Function

Ahora, necesitamos consumirla y hacer el resto:

Function AbrirVista()
    strSQL = "Cualquier consulta con SELECT"
    R = CrearEditarVista("NombreDeMiVista", SQL)
    
    If R = True Then 'Si se creó o editó la vista'
        'Refrescamos los objetos. Si no hacemos esto, dará error porque no encontrará la vista o nos abrirá la vista, con la consulta que ya tenía guardada'
        Application.RefreshDatabaseWindow
        'Esperamos un segundo a que se actualicen los objetos'
        Sleep (1)
        'Finalmente abrimos la vista'
        DoCmd.OpenView "NombreDeMiVista", acViewNormal
    End If
End Function

Aquí la función Sleep(), aclaro que no es mía, álgún genio de la Web la creó, y yo la copié

Public Function Sleep(NumberOfSeconds As Variant)
On Error GoTo Err_Pause

    Dim PauseTime As Variant, start As Variant

    PauseTime = NumberOfSeconds
    start = Timer
    Do While Timer < start + PauseTime
    DoEvents
    Loop

Exit_Pause:
    Exit Function

Err_Pause:
    MsgBox Err.number & " - " & Err.description, vbCritical, "Pause()"
    Resume Exit_Pause

End Function

Copia todo esto a un módulo y lo podrás usar sin problemas, o hasta puedes crear un formulario. como el siguiente:

SQLVista

Espero te sirva. ¡Hasta la próxima!

Los medicamentos, absolutamente, van a cambiar tu vida. Si el problema persiste durante un perГ­odo mГЎs largo, se debe consultar a un mГ©dico. ВїTiene alguna pregunta sobre Kamagra y comprare cialis? Por supuesto que no es todo. ВїQuГ© medicamento es adecuado para la incapacidad para obtener o mantener una erecciГіn? Tal vez usted sabe sobre . Otra cuestión que tenemos que discutir es . Tener impotencia lata complicar el romance. Todo tipo de medicamentos, desde aquellos que se consideran “todos naturales” a los que se producen quГ­micamente en un laboratorio, pueden causar algunos efectos secundarios no deseados.