Usuário com melhor resposta
Criar pasta pelo TRANSACT SQL

Pergunta
-
Respostas
-
criar direto nao conheco mais vc. pode usar a xp_cmdshell para executar um md por exemplo
exec master..xp_cmsshell 'md c:\pasta_nova'
obs. o c: e o caminho dentro do seu servidor para acesso a outros servidores / locias passar o unc name. e o usuario que sobe os servicos do sql precisa de dereitos para isso.
Abs;
Todas as Respostas
-
criar direto nao conheco mais vc. pode usar a xp_cmdshell para executar um md por exemplo
exec master..xp_cmsshell 'md c:\pasta_nova'
obs. o c: e o caminho dentro do seu servidor para acesso a outros servidores / locias passar o unc name. e o usuario que sobe os servicos do sql precisa de dereitos para isso.
Abs;
-
-
-
-
Boa Tarde,
De fato a XP_CMDSHELL é capaz de fazer isso assim como o CLR. No entanto, vale a pena lembrar que ela abre brechas de segurança. Da mesma forma que a xp_cmdshell abre a possibilidade de digitar um comando md para criar uma pasta, ela também abre a possibilidade de digitar um comando del ou format. Não recomendaria que você a utilizasse sobre nenhuma circustância (a menos que só você manipule).
As coisas começam pequenas e apenas uma aplicação cria pastas. Com o tempo, a solução se espalha para todos os projetos e nunca mais você terá controle sobre sobre essa procedure. Banco de dados não é pra criar pastas. Você deve procurar uma outra solução se possível.
[ ]s,
Gustavo
-
Apesar de ser possível utilizar o XP_CMDSHELL é também possível utilizar o CLR. Vc talvez possa criar uma DLL .Net e acioná-la via T-SQL. Acredito que chegue ao resultado esperado.
Porém sou da mesma opinião do Gustavo.
"Banco de dados não deve ser utilizado para criação de pastas. Você deve procurar uma outra solução se possível".
[ ]s.
-
nlopes,
Você pode verificar a existência de pastas e/ou arquivos utilizando a master..xp_fileexist e pegando o valor da coluna "File is a Directory". O problema é que você terá que criar uma temporária para guardar o retorno disto. Nem no SQL 2005, pois você não consegue inserir numa table variable, valores da execução de uma stored procedure.
Code Snippet
exec master..xp_fileexist 'c:\winnt'--// results
File
Exists File is a Directory Parent Directory Exists----------- ------------------- -----------------------
0 1 1
(
1 row(s) affected)exec
master..xp_fileexist 'c:\xxxxxxxx'--// results
File
Exists File is a Directory Parent Directory Exists----------- ------------------- -----------------------
0 0 1
(
1 row(s) affected)Um abraço,
Raul Santos
-
Caros colaboradores;
Consegui criar a pasta na minha maquina local, mas ainda estou tendo problemas para criar a pasta em uma outra maquina.
tentei como foi postado pelo Marcelo:
obs. o c: e o caminho dentro do seu servidor para acesso a outros servidores / locias passar o unc name. e o usuario que sobe os servicos do sql precisa de dereitos para isso.
Mas não entendi direito e nao consegui realizar tal operação.
Dei todas as permissões na pasta onde quero criar as SUBpastas na maquina de destino e ainda nada.
Esta dando Permissao Negada
alguem pode ajudar? -
NLopes,
Não tenho certeza, mas você deverá declarar o caminho completo(unc) para poder criar no local desejado.
Por exemplo: \\nomedoservidor\nomepasta
Deixa eu ver se entendi, você quer através do SQL Server, abrir uma sessão com o xp_cmdshell para criar a pasta em outro servidor?
-
Vou explicar toda a operação
tenho um script que gera mais de 100 arquivos txt.
Estou querendo fazer com que esses arquivos sejam salvos em uma outra maquina, e para ficar mais organizado, pensei em criar uma pasta para cada arquivo gerado.
Já esta funcionando o gerador de txt e ja conseguir criar as pastas na maquina LOCAL, mas nao estou conseguindo quando tento fazer essa operação em outra maquina.
Esta dando a mensagem: Access is denied.