2012-12-07 29 views
7

So che questo comando creerà una directory:Come posso verificare se esiste una directory utilizzando SQL Server?

EXEC master.sys.xp_create_subdir 'C:\testing\' 

Ma come faccio a verificare se la 'C: \ test \' esiste?

IF EXISTS(... 
+0

............... –

+3

Google ha restituito circa 54.000 risultati .. [1] (http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=105077) , [2] (http://social.msdn.microsoft.com/forums/en-US/transactsql/thread/7a96e929-bddd-42e1-b2f7-88be3055b7c2), [3] (http: //www.bidn. com/blog/briankmcdonald/bidn-blog/1143/define-if-directory-exists-using-xp_cmdshell) – Kermit

+7

Non sono d'accordo con questo essere chiuso come non costruttivo. La domanda è abbastanza chiara: ho controllato il centro assistenza per vedere quali erano i motivi legittimi per la chiusura e non ho trovato questo per corrispondere a nessuno di questi motivi. La domanda, anche se forse non è un segmento completo del codice, è abbastanza chiara per capire che la domanda chiede "Come controllo l'esistenza di una sottodirectory e faccio cose se esiste" – TDrudge

risposta

15
CREATE TABLE ResultSet (Directory varchar(200)) 

INSERT INTO ResultSet 
EXEC master.dbo.xp_subdirs 'c:\' 

Select * FROM ResultSet where Directory = 'testing' 

restituirà un elenco di sottodirectory, è possibile controllare il contenuto della lista.

+0

come faccio a selezionare da questa tabella? ho eseguito il comando e vedo il tavolo, ma come faccio a interrogarlo? –

+0

grazie, è esattamente quello che stavo cercando! –

+5

Suggerirei invece di utilizzare una tabella temporanea, in modo da non finire con una tabella statica fluttuante. CREATE TABLE #ResultSet (Directory varchar (200)) INSERT INTO #ResultSet 'C: \' EXEC master.dbo.xp_subdirs Se non esiste (Select * From #ResultSet dove directory = 'test') Begin # Fai cose qui Fine Se hai bisogno di farlo più volte su un blocco di codice, crea la tabella temporanea all'inizio del codice e poi troncala dopo ogni volta che la usi - ottimizza leggermente il codice per evitare riallocazione ogni volta. – TDrudge

Problemi correlati