in

Community Server

The platform that enables you to build rich, interactive communities

sql

abril 2009 - Posts

  • Script para copiar datos de una tabla a otra

    Con el siguiente script se pueden copiar datos de una tabla a otra tomando en cuenta las siguientes restricciones:

    1. Deben de ser el mismo numero de campos
    2. Los campos deben ser del mismo tipo
    3. No permite copiar datos de columnas que sean Identity

     

    INSERT INTO [tabla donde se va a escribir] (campo1, campo2, campo3, ...)
    SELECT (campo1, campo2, campo3, ...)
    FROM [tabla de la que se quiere copiar]
    [
    LEFT JOIN ]
    [WHERE condicion]

    Esta forma de copiar datos entre tablas fue encontrada en la página http://www.sqlserverya.com.ar/index.php?inicio=0 en donde se pueden encontrar alrededor de 70 conceptos con ejemplos acerca de SQL Server.

     

    Otra manera de copiar datos entre tablas es la siguiente:

     

    UPDATE MyTable
    SET complete = 1, complete_date = newdata.complete_date, post_score = newdata.post_score
    FROM
    ( SELECT userID, complete_date, post_score
      FROM MyTable
      WHERE courseID = 6
      AND complete = 1
      AND complete_date > '8/1/2008'
    ) newdata
    WHERE CourseID = 11 AND userID = newdata.userID

     

    Este script nos permite copiar datos entre dos tablas o en la misma tabla.

  • Crear plan de mantenimiento (continuación)

    Problema :

    Al crear el plan de mantenimiento puede afectar un Bug que hay dentro del Service Pack 2 de SQL Server ya que no carga la tarea de generar respaldos completos de la base de datos. Y al momento de ejecutar dicho plan de mantenimiento se genera el siguiente error:

    Started:  1:18:50 PM  Error: 2009-04-07 13:19:21.07    
    Code: 0xC0010018     Source: Back Up Database (Full)     
    Description: Error loading a task.
    The contact information for the task is "Back Up Database Task; Microsoft Corporation;
    Microsoft SQL Server v9; © 2004 Microsoft Corporation;
    All Rights Reserved;
    http://www.microsoft.com/sql/support/default.asp;1".
    This happens when loading a task fails.  End Error 
    Progress: 2009-04-07 13:19:21.32     Source: {0E392D67-8BE5-4D36-B956-BF8E67693048}     
    Executing query "DECLARE @Guid UNIQUEIDENTIFIER     
    EXECUTE msdb..sp".: 100% complete  End Progress 
    Error: 2009-04-07 13:19:21.59    
    Code: 0xC0024104    
    Source: Back Up Database (Full)     
    Description: The Execute method on the task returned error code 0x80004003
    (Collection cannot be null.  Parameter name: c).
    The Execute method ...  The package execution fa...  The step failed.

    SOLUCION :

    Al momento de crear el plan de mantenimiento, hacerlo sin el asistente de creación de SQL Management Studio y elegir el tipo de tarea de T-SQL, arrastrarla al espacio de edición del plan de mantenimiento y elegir la opción de Editar…

    1. Elegir en la opción de Timeout el valor 0 que por default no establece ningún timeout para la ejecución.
    2. Escribir el siguiente script en el cuadro de texto.

     

    USE [nombre_BD] BACKUP DATABASE [nombre_BD]--BD que se va a respaldar. TO  DISK = N'C:\Ruta_donde_almacenar\nombre_BD_full.BAK'--Ruta a donde se va a generar el respaldo. WITH  DESCRIPTION = N'Respaldo completo de la base de datos nombre_BD', --Descripción del respaldo. NOFORMAT, INIT, NAME = N'nombre_BD_respaldo_completo', --Alias del respaldo a nivel lógico. SKIP, NOREWIND, NOUNLOAD, CHECKSUM

     

    Al terminar solo generar el Schedule para determinar cuando se va a generar la tarea y Guardar el plan de mantenimiento.

  • Error al modificar un plan de mantenimiento SQL 2005

    Error:

    GUID debe contener 32 dígitos con guiones 4 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

    Causa:

    Este problema se produce porque un registro del plan de mantenimiento no se actualiza en la tabla de sistema sysmaintplan_subplans al importar el plan de mantenimiento desde el paquete Integration Services.

    Solucion:

    Para solucionar este problema, crear manualmente el registro del plan de mantenimiento que se importa. Para ello, siga estos pasos:

    1. Inicie SQL Server Management Studio y, a continuación, conéctese a la instancia de SQL Server 2005.
    2. Para obtener el identificador GUID del plan de mantenimiento que se importa, ejecute las instrucciones siguientes.
      use msdb
      go
      select id from sysdtspackages90 where name='NewPlan'
      go
      
      Tenga en cuenta Estas instrucciones se supone que importar un plan de mantenimiento que se denomina NewPlan en la instancia predeterminada de SQL Server 2005.

      Para obtener el identificador GUID siguiente en la columna id del resultado:
      6A7FA469-F5DB-4FF4-B153-5F11926477B7
    3. Crear un trabajo que se denomina NewPlanJob y, a continuación, haga clic en Mantenimiento de bases de datos en la lista categoría .
    4. Para el trabajo que ha creado en el paso 3, crear un nuevo paso que se denomina NewPlanStep y, a continuación, haga clic en paquete de SQL Server Integration Services en la lista Tipo .
    5. Cierre el cuadro de diálogo nuevo trabajo .
    6. Para obtener el identificador GUID del paso que ha creado en el paso 4, ejecute las instrucciones siguientes.
      use msdb
      go
      select job_id from sysjobsteps where step_name='NewPlanStep'
      go
      
      Para obtener el identificador GUID siguiente en la columna idtrabajo del resultado:
      E85564E2-92A1-4B70-89DF-329F152CCD97
    7. Para obtener el identificador GUID del registro que no se actualiza en la tabla de sistema sysmaintplan_subplans al importar el plan de mantenimiento. Para ello, siga estos pasos:
      1. Iniciar Business Intelligence Development Studio y, a continuación, cree un nuevo proyecto de Integration Services.
      2. En el Explorador de soluciones, haga clic con el botón secundario en los paquetes de SSIS y, a continuación, haga clic en Agregar paquete existente .
      3. Agregue el plan de mantenimiento NewPlan al proyecto actual desde la ubicación correcta del paquete.
      4. En el Explorador de soluciones, haga doble clic en el paquete importado.
      5. En la vista Diseño, haga clic en la tarea que tiene un nombre que se asemeja a las siguientes:
        Notificación de tarea para subplan-{1EFB298F-1313-4A26-8986-A5C9C5A0C2AB}
        En este ejemplo, 1EFB298F-1313-4A26-8986-A5C9C5A0C2AB es el GUID.
    8. Para insertar el registro necesario en la tabla de sistema sysmaintplan_subplans , ejecute la siguiente instrucción en SQL Server Management Studio.
      insert into sysmaintplan_subplans (
      	subplan_id,
      	subplan_name,
      	subplan_description,
      	plan_id,
      	job_id
      )values (
      	'1EFB298F-1313-4A26-8986-A5C9C5A0C2AB',
      	'NewPlan','',
      	'6A7FA469-F5DB-4FF4-B153-5F11926477B7',
      	'E85564E2-92A1-4B70-89DF-329F152CCD97'
      )
      GO
    9. Para corregir el comando del programa el trabajo que ha creado en el paso 3, ejecute la siguiente instrucción.
      update sysjobsteps 
      set command='/Server YourServer /SQL "Maintenance Plans\NewPlan" /set "\Package\NewPlan.Disable;false"'
      where step_name='NewPlanStep'
  • Crear plan de mantenimiento no se pudo.

    Sintomas:

    El '@subsystem' especificado no es válido (los valores válidos son devuelto por sp_enum_sqlagent_subsystems). (Microsoft SQL Server, error 14234)

    Causa:

    Este comportamiento se produce cuando se instala SQL Server 2005 sin instalar el servicio de SQL Server 2005 Integration Services (SSIS). Al crear el plan de mantenimiento, el código siguiente se ejecuta.  

    Solucion:

    Para resolver este comportamiento, instale el servicio de Integration Services desde el CD de SQL Server 2005. Para ello, siga estos pasos:

    1. Ejecute el Asistente para instalación de SQL Server.
    2. En la página comprobar la configuración del sistema, haga clic en siguiente después de que finalice la exploración.
    3. En el cuadro Nombre y en el cuadro organización , escriba la información adecuada y, a continuación, haga clic en siguiente .
    4. Haga clic en para activar la casilla de verificación Integration Services y, a continuación, haga clic en siguiente .
    5. Haga clic en siguiente y, a continuación, haga clic en Instalar .
    6. Cuando finalice la instalación, haga clic en siguiente y, a continuación, haga clic en Finalizar .

    Fuente de Informacion:

    http://support.microsoft.com/kb/909036#top

Powered by Community Server (Non-Commercial Edition), by Telligent Systems