2013-02-19 15 views
5

W programie SQL Server 2008 próbuję ZAPISZ WSTAWIĆ plik CSV o rozmiarze około 1 GB. Kiedy to robię, tworzy się ogromny plik tempdb.mdf. W tej chwili jest to 35 GB dla tego pliku CSV o pojemności 1 GB.Czy można bezpiecznie ręcznie usunąć plik tempdb.mdf?

Próbowałem różnych rozwiązań, które Microsoft provides, a oni nie wydają się działać.

Myślę, że najłatwiejszym sposobem "zmniejszenia" pliku tempdb.mdf w systemie nieprodukcyjnym jest po prostu usunięcie go, gdy usługa SQL nie działa.

Czy to spowoduje jakiekolwiek problemy? Jeśli tak, jakie rodzaje problemów można się spodziewać?

Edits

1) Oto wiersz z CSV (ma około 4M wierszy):

PS D:\> gc .\map.items.csv | select -last 1 
40747646;jdbc:patent/8046822;8683;other/patent;12/31/69 16:00:00.00 PST;E6 E6 80 6D FD 6D 0B 5F 44 66 4E 1C 35 DE 46 BB 19 36 3C 31 37 67 4D 1D DF 58 A5 99 A8 A0 3B 52;crawled;full_patent_db2;Electronic apparatus, function selection method of electronic apparatus and management system of electronic apparatus;Sony Corporation;Tokyo;03;G06F21/00 

2) Oto DB opisać informacje stołowego (nic egzotyczne, i bez wyzwalaczy): https://gist.github.com/mlissner/4cd13db5a1bbae91dd50

3) Mam Baza danych jest ustawiona na prosty model odzyskiwania.

+1

Pokaż strukturę tabeli (w tym indeksy), ogólny format pliku CSV (kilka wierszy jest w porządku) i liczbę wierszy w pliku. Daj nam również znać, jeśli tabela, którą próbujesz włożyć luzem, ma wyzwalacze, jeśli masz egzotyczne funkcje, takie jak CDC i śledzenie zmian, replikacja itp. –

+1

Z pewnością usuwanie podczas pracy w trybie offline nie przyniesie wiele korzyści, ponieważ zostanie zresetowane podczas uruchamiania? – chrisb

+0

@chrisb próbowałeś tego? Czy poleciłbyś wypróbowanie go na instancji produkcyjnej? Czy chciałbyś dobrowolnie wystawić swoją instancję produkcyjną na ten test? –

Odpowiedz

1

W końcu tak, to było bezpieczne dla mnie, aby usunąć ten plik. SHRINKFILE nie działał konsekwentnie (nie wiem dlaczego, prawdopodobnie coś podstawowego), a usunięcie pliku działało idealnie.

Rodzaj ruchu voodoo, tak, ale plik został automatycznie odtworzony i nie wystąpiły żadne problemy.

4

Nie, nie można usunąć pliku tempdf mdf.

Jeśli chcesz zmniejszyć plik ponownie, uruchom ponownie program SQL Server, a następnie uruchom DBCC SHRINKFILE(). Jest to obsługiwana operacja, w przeciwieństwie do "usuwania pliku mdf, gdy serwer SQL nie szuka" voodoo.

Możliwe, że będziesz w stanie zoptymalizować operację masową, aby tempdb nie było tak mocno uderzane w pierwsze miejsce, ale nie można powiedzieć o szczegółach, zważywszy na faktyczny problem.

+0

Dzięki. Zobacz powyżej w celu edycji. – mlissner

0

Czy możesz użyć BCP? Jest to zalecany sposób ładowania dużych płaskich plików do programu SQL Server.

Alternatywnie można przejść z pełnego modelu odzyskiwania do prostego modelu odzyskiwania? Spowoduje to zmniejszenie ilości rejestrowanych transakcji przez serwer.

+0

MSDN faktycznie [mówi odwrotnie] (http://msdn.microsoft.com/en-us/library/ms190421 (v = sql.105).aspx): "Jeśli to możliwe, użyj instrukcji Transact-SQL, aby zbiorczo zaimportować dane do SQL Server, ponieważ Transact-SQL jest szybszy niż bcp." – Pondlife

+0

Wystarczająco fair. Zawsze uważałem, że BCP jest zalecanym podejściem. Na temat: istnieje artykuł MSDN [link] (http://msdn.microsoft.com/en-us/library/ms190422 (v = sql.105) .aspx) http://msdn.microsoft.com/pl -us/library/ms190422 (v = sql.105) .aspx, który wydaje się odpowiedni. –

Powiązane problemy