AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 150992
Accepted
iDevlop
iDevlop
Asked: 2016-09-30 02:10:23 +0800 CST2016-09-30 02:10:23 +0800 CST 2016-09-30 02:10:23 +0800 CST

Atualizando pacotes SSIS

  • 772

Descobri que os pacotes em um SQL Server 2012 só podiam ser acessados ​​usando uma versão mais antiga do SSIS e, ao pesquisar o assunto, descobri que talvez eu devesse atualizar esses pacotes e que provavelmente existem alguns pacotes obsoletos lá.

insira a descrição da imagem aqui

Minhas perguntas são: Posso de alguma forma ter certeza de que aqueles na pasta SERV-XXX serão atualizados com segurança? (são exportações simples de uma exibição para um CSV ou XLS ou TXT local).

sql-server ssis
  • 1 1 respostas
  • 1402 Views

1 respostas

  • Voted
  1. Best Answer
    billinkc
    2016-09-30T07:51:20+08:002016-09-30T07:51:20+08:00

    Para reafirmar, você tem pacotes no SQL Server 2008 R2 e deseja migrá-los para o SQL Server 2012. Os pacotes geralmente são exportados para "formato de arquivo".

    A única maneira de saber se eles atualizaram com sucesso é atualizá-los e descobrir. O maior desafio que me lembro foi com pacotes que tinham Componentes de Script (não Tarefas), já que o pipeline tem algumas mudanças estruturais grandes. A outra ressalva óbvia é se você usou uma tarefa/componente personalizado de terceiros/internos. Isso exigirá migração manual e modificação dos pacotes no Visual Studio.

    Você tem duas opções com sua atualização. O SSIS agora tem dois modelos de implantação. Modelo de implantação de pacote , também conhecido como Classic/Legacy, que é o que você tem aqui. Os pacotes podem ser implantados no sistema de arquivos ou msdb, você controla sua configuração, registro, controle de versão, etc.

    O modelo de implantação do projeto é a nova moda. Existe um catálogo SSISDB dedicado que lida com toda a configuração, registro, controle de versão, etc. para você. Eu geralmente o prefiro ao primeiro, pois fornece uma melhor experiência de gerenciamento e execução. A migração de projetos de modelo de implantação de pacote para o modelo de implantação de projeto requer a alteração dos próprios pacotes. O assistente de atualização ajudará nisso, mas removerá o registro e a configuração, pois deseja que você use a nova maneira. Isso exigirá mais testes do que o simples teste de fumaça exigido com um caminho de atualização do modelo de implantação de pacote. Se vale a pena o esforço, especialmente em um ambiente pesado de controle de alterações, é melhor responder por você.

    Uma abordagem para atualização de implantação de pacote

    dtutil.exe é a ferramenta de linha de comando para implantar pacotes SSIS. Assumindo o caminho de instalação padrão, você procuraria o dtutil que está dentro C:\Program Files\Microsoft SQL Server\100\DTS\Binn\dtutil.exepara extrair os pacotes como estão. Quando uma versão mais recente das ferramentas do SSIS toca um pacote de versão anterior, a primeira coisa que acontece é uma atualização na memória para essa versão do SSIS. Menciono isso como se você não usasse o controle de origem, talvez queira extrair os pacotes "como estão" da instância 2008 R2 existente antes de implantar na instância 2012. Eu tenho um script para isso

    ;
    WITH FOLDERS AS
    (
        -- Capture root node
        SELECT
            cast(PF.foldername AS varchar(max)) AS FolderPath
        ,   PF.folderid
        ,   PF.parentfolderid
        ,   PF.foldername
        FROM
            msdb.dbo.sysssispackagefolders PF
        WHERE
            PF.parentfolderid IS NULL
    
        -- build recursive hierarchy
        UNION ALL
        SELECT
            cast(F.FolderPath + '\' + PF.foldername AS varchar(max)) AS FolderPath
        ,   PF.folderid
        ,   PF.parentfolderid
        ,   PF.foldername
        FROM
            msdb.dbo.sysssispackagefolders PF
            INNER JOIN
                FOLDERS F
                ON F.folderid = PF.parentfolderid
    )
    ,   PACKAGES AS
    (
        -- pull information about stored SSIS packages
        SELECT
            P.name AS PackageName
        ,   P.id AS PackageId
        ,   P.description as PackageDescription
        ,   P.folderid
        ,   P.packageFormat
        ,   P.packageType
        ,   P.vermajor
        ,   P.verminor
        ,   P.verbuild
        ,   suser_sname(P.ownersid) AS ownername
        FROM
            msdb.dbo.sysssispackages P
    )
    SELECT 
        -- assumes default instance and localhost
        -- use serverproperty('servername') and serverproperty('instancename') 
        -- if you need to really make this generic
        'dtutil /sourceserver ' + @@SERVERNAME + ' /SQL "'+ F.FolderPath + '\' + P.PackageName + '" /copy file;".\' + P.PackageName +'.dtsx"' AS cmd
    FROM 
        FOLDERS F
        INNER JOIN
            PACKAGES P
            ON P.folderid = F.folderid
     WHERE
         F.FolderPath LIKE '\SERV%';
    

    Se você gosta de viver perigosamente, pode alterar o SELECT final para ignorar o sistema de arquivos e implantar diretamente no outro servidor. Isso pressupõe que você já criou a mesma estrutura de pastas ali.

    'dtutil /sourceserver ' + @@SERVERNAME + ' /SQL "'+ F.FolderPath + '\' + P.PackageName + '" /destserver MyShiny2012Box /copy SQL;"'+ F.FolderPath + '\' + P.PackageName + '"' AS cmd
    

    Eu observei o que foi dito acima e parece aproximadamente correto, mas você deve testá-lo. Ele deve renderizar um comando semelhante ao seguinte

    dtutil /sourceserver localhost /SQL "\SERV-ABC\Package" /destserv MyShiny2012Box /copy SQL;"\SERV-ABC\Package"
    

    Para que isso funcione, você precisa ter certeza de que dtutil é a versão 2012 que deve estar emC:\Program Files\Microsoft SQL Server\110\DTS\Binn\dtutil.exe

    Dos comentários

    Não confunda o ferramental com os produtos e/ou servidores instalados. A partir de 2005, há uma versão do SSMS lançada com cada versão do SQL Server (isso fica obscuro a partir do SQL Server 2016). O SSMS possui um "explorador de objetos". A parte do mecanismo de banco de dados do explorador de objetos pode ser usada para gerenciar todas as versões do SQL Server e a recomendação comum é sempre usar a versão mais recente do SSMS em seu ambiente, pois terá a maioria das correções de bugs, etc.

    Onde este conselho pode falhar se você usar as opções "outras" para o Object Explorer. O SSIS é a única coisa que uso com regularidade, então abordarei isso.

    insira a descrição da imagem aqui

    Você deve usar a versão do SSMS que corresponda à instância do SQL Server de destino para que ela "funcione". Na captura de tela, você está conectado aos Serviços de Integração do servidor 2008 R2 ... seja lá o que for, mas ignore. Sim, ignore essa ferramenta blecherous como é inútil. Não ajuda se você tiver várias instâncias em execução e só executa pacotes em ... 32 ou 64 bits, não me lembro qual.

    Em vez disso, use o único tipo de Pesquisador de Objetos que funciona em suas instâncias - o mecanismo de banco de dados. Os pacotes SSIS armazenados no "banco de dados" estarão no msdb. Use a consulta acima ou explore essas tabelas você mesmo. Todos os dados estão lá. Existem procedimentos tsql para mover pacotes, armazená-los, etc, embora eu prefira o dtutil.

    • 2

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve