Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Eksportowanie wyników zapytania do pliku na bieżąco

Wydaje mi się, że nie czekasz na kod SQL w odpowiedzi na swoje pytanie. Głównym aspektem twojego pytania jest aspekt bezpieczeństwa. Co powinieneś zrobić, aby wdrożyć swoje wymagania bez sysadmina przywileje i bez nowej luki w zabezpieczeniach? Myślę, że to jest twoje prawdziwe pytanie.

Widzę co najmniej 3 sposoby rozwiązania twojego problemu. Ale przede wszystkim krótkie wyjaśnienie, dlaczego uprawnienia administratora istnieją we wszystkich rozwiązaniach opartych na Rozszerzonych procedurach składowanych . Rozszerzone procedury składowane, takie jak xp_cmdshell są bardzo stare. Istniały co najmniej przed SQL Server 4.2, pierwszym Microsoft SQL Server działającym pod pierwszym Windows NT (NT 3.1). W starej wersji SQL Server nie ograniczałem się do wykonywania takich procedur, ale później takie ograniczenia zostały wprowadzone. Ważne jest, aby zrozumieć, że wszystkie ogólne cele procedury umożliwiające rozpoczęcie dowolnego procesu pod kontem SQL Server, takim jak xp_cmdshell i sp_OACreate musi mieć sysadmina ograniczenie przywilejów. Tylko zorientowany na zadanie procedury z jasnym obszarem użytkowania i uprawnieniami opartymi na rolach mogą rozwiązać problem bez luki w zabezpieczeniach. Oto 3 sposoby rozwiązania, które obiecałem wcześniej:

  • Tworzysz nowe konto SQL na serwerze SQL za pomocą sysadmina przywileje. Następnie tworzysz procedurę składowaną, która korzysta z niektórych z Rozszerzonych procedur składowanych jak xp_cmdshell lub sp_OACreate i technicznie zaimplementuj Twoje wymagania (wyeksportuj niektóre informacje do pliku CSV). W odniesieniu do WYKONAJ JAKO Klauzula (patrz http://msdn.microsoft.com/en-us/ biblioteka/ms188354.aspx ) konfigurujesz utworzoną procedurę składowaną tak, aby działała na koncie z sysadmin przywileje. Delegujesz wykonanie tej procedury użytkownikom z pewną rolą SQL, aby być bardziej elastycznym od strony delegowania uprawnień.
  • Możesz użyć procedur składowanych CLR zamiast xp_cmdshell i sp_OACreate . Powinieneś również użyć uprawnień opartych na rolach w utworzonej procedurze.
  • Użytkownik końcowy nie wywołuje bezpośrednio żadnej utworzonej przez użytkownika procedury składowanej SQL. Istnieje oprogramowanie (takie jak usługa WCF lub witryna sieci Web), które wywołuje procedurę składowaną SQL. Możesz zaimplementować eksport do pliku CSV w tym oprogramowaniu, a nie w żadnej procedurze składowanej SQL.

We wszystkich sposobach implementacji powinieneś dokładnie określić gdzie będziesz przechowywać hasło konta, za pomocą którego uzyskujesz dostęp do systemu plików. Istnieją różne opcje, wszystkie z odpowiadającymi im zaletami i wadami. Możliwe jest użycie personifikacji, aby umożliwić dostęp do systemu plików za pomocą konta użytkownika końcowego. Najlepszy sposób zależy od sytuacji w Twoim otoczeniu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najbardziej wydajna metoda wykrywania zmian kolumn w MS SQL Server

  2. Używanie COALESCE w widoku SQL

  3. Dlaczego pojedyncza instrukcja usuwania SQL spowoduje zakleszczenie?

  4. Nieoczekiwane wyniki CTE

  5. Zainstalowany SQL Server 2008, choć wersja bieżąca to nadal 2005