7
votes

Créer automatiquement des scripts pour tous les travaux SQL Server

J'essaie actuellement de générer automatiquement un script Créer pour tous mes travaux SQL d'un serveur MS SQL2005.

  • Une méthode que j'ai trouvée a été faite manuellement http://msdn.microsoft.com/en-us/library/ms191450. ASPX

  • Une deuxième méthode que j'ai trouvée pourrait être faite automatiquement mais je n'ai pas de direct Accès au serveur SQL.

    Lien brisé supprimé: liatairesTerms.com/thread/1916663/can%20i%20Script%20out%20SQL%20Server%20Jobs%20programmatiplatine

    Est-ce que quelqu'un connaît une bonne déclaration TSQL ou un programme simple pour cela?


3 commentaires

Vous avez dit que vous n'aviez pas d'accès direct au serveur SQL? Comment envisagez-vous d'exécuter une solution TSQL s'il vous plaît?


Je voulais dire que je ne pouvais accéder que le serveur via SQL Management Studio et non par exemple par exemple du protocole de bureau distant. Je ne peux donc pas exécuter de logiciels tiers sur le serveur.


FYI, le deuxième lien est mort


5 Réponses :


-1
votes

Je maintiens les fichiers de SQL pour chaque table, puis utilisez Cygwin pour exécuter un script shell qui les chat ensemble puis exécutez-le sur le serveur.

#!/bin/bash
# Please add new creation scripts and meta data scripts to the script below.
# To be able to run this script don't forget to chmod 744 it.
# Make sure the create script are saved using the ANSI encoding and not unicode etc.

master_script="create_all.sql"
#path="C:\\"

#cd $path

cat *.sql >$master_script

notepad $master_script

#rm $master_script


3 commentaires

Je pense que vous avez mal compris la question, je ne cherche pas une méthode pour exécuter le script, mais je recherche un script qui génère les déclarations créées de tous mes emplois SQL, ceci par une procédure stockée que je peux déclencher avec un Déclaration OSQL. J'en ai besoin pour sauvegarder mes emplois SQL en tant que script.


Peu dur que je reçois -1 lorsque votre question n'est pas particulièrement claire. - On dirait que vous n'avez pas les tables SQL déjà créées et attendez-vous à apparaître comme par magie


Il serait juste de uplifier ce bowvote. Bien que, après tant d'années :)



3
votes

Après une enquête supplémentaire, j'ai trouvé un bon script qui a fait le travail générer-scripts- For-SQL-Server-Objets

Le code ci-dessous est ce dont j'avais besoin: xxx

merci pour l'aide de toute façon


0 commentaires

4
votes

J'utilise ce code> enregistré sur code> pour créer un script à partir de tous les travaux dans une base de données: xxx pré>

et pour tous base de données code> dans SQL Server Utilisez ce Procédure stockée CODE> P>

Use msdb
Go

Create Procedure CreateBackUpFromAllJob
@Path VarChar(1000)  
As
Begin
Declare @JobName NVarChar(1000) = ''

Declare Cur1 Cursor For
    Select job.name 
    From sysjobs As job

Open Cur1

Fetch Next From Cur1 InTo @JobName

While( @@FETCH_STATUS = 0 )
    Begin
        Exec msdb.dbo.CreateBackUpFromJob @JobName , @Path
        Fetch Next From Cur1 InTo @JobName
    End

Close Cur1
Deallocate Cur1

End


2 commentaires

Cela ne fonctionnait pas pour moi! Je suis toujours à la recherche d'un bon et fiable Proc qui serait script mon travail


@Marcellomiorelli Quel était votre problème? Pourquoi ce code n'a-t-il pas fonctionné pour vous? Quelle était votre attente et quel était le résultat de ce code?



7
votes

C'est une question assez ancienne, mais pour les futurs visiteurs ma réponse peut être utile:

Une autre solution consiste à simplement exporter vers un fichier en utilisant dbatools xxx

vous pouvez même scripter de votre instance ou sous-ensemble, y compris les travaux d'agent, les opérateurs, les connexions, etc. pour Objectif de récupération après sinistre .


0 commentaires

1
votes

Cela m'a aidé:

script Tous les travaux de l'agent SQL à l'aide de PowerShell forts> p>

http://www.dbascript.com/script-all-sql-agent-jobs-utilisant-powershell P>

Un moyen facile de script, de documenter et de sauvegarder tous les emplois d'agent SQL utilisant PowerShell. Le script créera un travail SQL appelé "Backup SQL Agent Effaires" qui scrut tout le travail et enregistrera le script dans l'emplacement spécifié. P>

USE [msdb]
GO

/****** Object:  Job [Backup SQL Agent Jobs]   ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object:  JobCategory [[Uncategorized (Local)]]]    ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'Backup SQL Agent Jobs', 
        @enabled=1, 
        @notify_level_eventlog=0, 
        @notify_level_email=0, 
        @notify_level_netsend=0, 
        @notify_level_page=0, 
        @delete_level=0, 
        @description=N'No description available.', 
        @category_name=N'[Uncategorized (Local)]', 
        @owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [Backup SQL Agent Jobs]     ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup SQL Agent Jobs', 
        @step_id=1, 
        @cmdexec_success_code=0, 
        @on_success_action=1, 
        @on_success_step_id=0, 
        @on_fail_action=2, 
        @on_fail_step_id=0, 
        @retry_attempts=0, 
        @retry_interval=0, 
        @os_run_priority=0, @subsystem=N'PowerShell', 
        @command=N'[System.Reflection.Assembly]::LoadWithPartialName(''Microsoft.SqlServer.Smo'') | Out-Null
$serverInstance = "DELL"

$server = New-Object (''Microsoft.SqlServer.Management.Smo.Server'') $serverInstance

$jobs = $server.JobServer.Jobs 
#$jobs = $server.JobServer.Jobs | where-object {$_.category -eq "[your category]"}

if ($jobs -ne $null)
{

$serverInstance = $serverInstance.Replace("\", "-")

ForEach ( $job in $jobs )
{
$FileName = "C:\SQLBackup\SQLJobs\" + $serverInstance + "_" + $job.Name + ".sql"
$job.Script() | Out-File -filepath $FileName
}
}', 
        @database_name=N'master', 
        @flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:

GO


0 commentaires