J'essaie actuellement de générer automatiquement un script Créer pour tous mes travaux SQL d'un serveur MS SQL2005. P>
Une méthode que j'ai trouvée a été faite manuellement http://msdn.microsoft.com/en-us/library/ms191450. ASPX P> li>
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. P>
Lien brisé supprimé: liatairesTerms.com/thread/1916663/can%20i%20Script%20out%20SQL%20Server%20Jobs%20programmatiplatine P>
li>
ul>
Est-ce que quelqu'un connaît une bonne déclaration TSQL ou un programme simple pour cela? P>
5 Réponses :
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
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 :)
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: p> merci pour l'aide de toute façon p> p> p> P>
J'utilise ce code> enregistré sur code> pour créer un script à partir de tous les travaux dans une base de données: 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
Cela ne fonctionnait pas pour moi! Je suis toujours à la recherche d'un bon et fiable code> 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?
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 p> 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 . P> p>
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
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