Sobre el autor

Roy Rojas

Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub

8 Comentarios

  1. 1

    Samuel Garcia

    Hola Roy buen día, estupenda colaboración, me gustaría si te es posible me pudieras ayudar un poco con un tema que refiere a migrar una base de datos access 2010 a una base de datos Sql Server 2008 R2, el detalle esta en que la BD Access tiene campos “Autonumerico” en diferentes tablas y en SQL Server se deben tener igual, de antemano agradezco tu apoyo, saludos

    PD. Utilizo VB.NET 2010 para desarrollar la migración

    Responder
    1. 1.1

      Roy Rojas

      para qué usas vb.net para hacer la migración?, eso lo puedes hacer desde el mismo sql server, importando los datos con el “SQL Server Import and Exports Wizard” y ahí selecionas el tipo de fuente, en este caso access y ahí sigues todos los pasos, es muy sencillo.

      Responder
  2. 2

    Rolando

    Hola Roy, buenos dias, sucede que trate de hacer un UNION ALL con dos Vistas, que tienen los mismos campos pero … la primera vista ACINOX.dbo.GENERAL_Contrato_Detalles los campos NOMBRE_Area, nombre y Representante de la BD ACINOX tienen el Colation en SQL_Latin1_General_CP1_CI_AS y en la otra tabla versax.dbo.Gen_Contratos_Import el collation es SQL_Latin1_General_Pref_CP850_CI_AS, trate de hacer lo que usted me explica aqui, y no me funcionan . Me puedes ayudar. Gracias de antemano

    SELECT Id_Area, NOMBRE_Area, Numero, nombre, TipoContrato, Eatado , Representante, fecha, fechaTerm, NumRef, Observaciones
    FROM ACINOX.dbo.GENERAL_Contrato_Detalles
    UNION ALL
    SELECT Id_Area, NOMBRE_Area, Numero, nombre, TipoContrato, Estado, Representante, fecha, fechaTerm, NumRef, Observaciones
    FROM versax.dbo.Gen_Contratos_Import

    Responder
    1. 2.1

      Roy Rojas

      hola, me parece que no estas poniendo el collation en las columnas correspondientes.

      Deberias de hacerlo algo similar, no lo he probado con vistas, por que tambien puedes ponerle el collation directamente en la vista.

      SELECT
      Id_Area,
      NOMBRE_Area COLLATE SQL_Latin1_General_CP1_CI_AS,
      NumRef,
      Observaciones COLLATE SQL_Latin1_General_CP1_CI_AS
      FROM ACINOX.dbo.GENERAL_Contrato_Detalles
      UNION ALL
      SELECT
      Id_Area,
      NOMBRE_Area COLLATE SQL_Latin1_General_CP1_CI_AS,
      NumRef,
      Observaciones COLLATE SQL_Latin1_General_CP1_CI_AS
      FROM versax.dbo.Gen_Contratos_Import

      Responder
  3. 3

    Rolando

    AHH mi versión es MS SQL Server 2008 R2

    Responder
  4. 4

    Rolando

    Disculpa Roy son dos views

    Responder
  5. 5

    Nahomi

    Hola buen día Roy, tengo un problema con COLLATE, estoy aplicando COLLATE database_default a cada unos de los campos de la tabla alumnoParticipante de reciente creación como se muestra:

    Select clave, nombres, primer_Apellido, segundo_Apellido, ‘PF’ as status, actividad
    from alumno_pifi
    where @anho_inicio=anho_inicio and folio=@folio –and clave_periodo=@periodo
    union
    Select clave, nombres, primer_Apellido, segundo_Apellido, ‘SS’ as status, actividad
    from prestante_social
    where @anho_inicio=anho_inicio and folio=@folio –and clave_periodo=@periodo
    union
    Select clave, nombres, primer_Apellido, segundo_Apellido, ‘TS’ as status, actividad
    from tesista
    where @anho_inicio=anho_inicio and folio=@folio –and clave_periodo=@periodo
    union
    Select clave, nombres, primer_Apellido, segundo_Apellido, ‘PP’ as status, actividad
    from practicante_profesional
    where @anho_inicio=anho_inicio and folio=@folio –and clave_periodo=@periodo
    union
    Select clave COLLATE database_default, nombres COLLATE database_default, primer_Apellido COLLATE database_default, segundo_Apellido COLLATE database_default, ‘AP’ as status, actividad COLLATE database_default
    from alumnoParticipante
    where @anho_inicio=anho_inicio and folio=@folio –and clave_periodo=@periodo
    ) /*order by primer_Apellido, segundo_Apellido, nombres*/

    y me muestra el siguiente error:

    Msg 447, Level 16, State 0, Procedure cgpi_DameAlumnos, Line 31
    Expression type int is invalid for COLLATE clause.

    Podrías ayudarme con este problema? Agradezco tu atención.

    Responder
    1. 5.1

      Roy Rojas

      Hola, por lo que veo no estas aplicando el collation en todas las subconsultas, es probable que alguno de los selects en los union tenga un collation distinto. Yo te recomiendo que si no estas segura de cual collation es el default le indiques explícitamente.

      Responder

Deja un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

2015 Powered by DotNetcr.com