wtorek, 19 kwietnia 2011

Mapowanie dysku sieciowego z pozycji T-SQL-a

Dziś pokażę w jaki prosty sposób zmapować dysk sieciowy z poziomu MSSQL-a. Jest to szczególnie przydatne w momencie jak chcemy pobrać jakiś plik ze zdalnego serwera zabezpieczonego za pomocą loginu i hasła np. w celu załadowania za pomocą BULK INSERT


xp_cmdshell 'cmd /c IF EXIST W: net use W: /DELETE'
xp_cmdshell 'cmd /c net use W: \\maszyna\udzial haslo /USER:maszyna\login /PERSISTENT:YES'

 BULK INSERT dbo.tabela
   FROM 'W:\plik.txt'
   WITH
   (
   FIELDTERMINATOR =';',
   ROWTERMINATOR ='\n',
   FIRSTROW = 2,
   CODEPAGE = 1250
   )

jeżeli z jakiegoś powodu nie chcemy angażować dysku sieciowego, to wykorzystamy UNC

xp_cmdshell 'cmd /c IF EXIST \\maszyna\udzial net use \\maszyna\udzial /DELETE'
xp_cmdshell 'cmd /c net use W: \\maszyna\udzial haslo /USER:maszyna\login /PERSISTENT:YES'

 BULK INSERT dbo.tabela
   FROM '\\maszyna\udzial\plik.txt'
   WITH 
   (
   FIELDTERMINATOR =';',
   ROWTERMINATOR ='\n',
   FIRSTROW = 2,
   CODEPAGE = 1250
   )


1 komentarz:

  1. A jaki dysk sieciowy w ogóle wybrać? Bo mnie właśnie to sprawia największe problemy. Na stronie https://www.oleole.pl/dyski-sieciowe.bhtml jest kilka propozycji i do mnie najgorsze zawsze są te kwestie techniczne. Z tym miałem największy problem, odkąd pamiętam.

    OdpowiedzUsuń