(b)log transakcyjny

can do everything i believe in

Instalacja Service Pack 4 na SQL Server 2000 a zalecane uwierzytelnianie

without comments

Microsoft zaleca, żeby tam gdzie jest to możliwe używać uwierzytelniania windowsowego. Na maszynie, na której mam postawiony SQL Server 2000 mam w nim włączone właśnie takie uwierzytelnianie:

install-sp4-on-shiloh-01

Podczas instalacji pakietu SP4 do tego serwera instalator informuje nas o tym, że hasło konta ‘sa’ jest puste oraz pyta, czy ustawić dla tego konta hasło, co zdecydowanie zaleca:

install-sp4-on-shiloh-02

Zastanawiałem się, po co instalator nas uszczęśliwia na siłę i każe nam ustawiać hasło na koncie, którego nie używamy, ba, nie mamy nawet możliwości użyć tego konta, bo konta SQL-owe mamy wyłączone w instancji.

Wiedziałem że są ludzie (podobno jest ich całkiem spora ilość), którzy przy projektowaniu aplikacji posługują się właśnie kontem ‘sa’ jako służącym do logowania do bazy a logikę sprawdzania uprawnień realizują w aplikacji (czy nie wygląda to na wchodzenie we wrotkach na górkę tyłem?). Wiedziałem również, że jest grupa osób, która używa konta ‘sa’ z pustym hasłem. Wiem też, że są osoby, które należą do obu tych grup. Ale że jest sens w tym, co wypisał ten instalator to ciężko mi było znaleźć racjonalne wyjaśnienie.

Na szczęście miałem dziś okazję podzielić się ową refleksją z Pawłem Potasińskim (aka C3PO), który mi to szybko wyjaśnił :-) Nie pamiętam dokładnie słów, szło to jakoś tak: ‘zawsze ktoś może zmienić sposób uwierzytelniania i wtedy hasło dla konta ‘sa’ nie będzie już puste’. Przekonujące wyjaśnienie, zastosuję sugestię instalatora. I dodatkowo wypada się zabezpieczyć, żeby źli ludzie nie mieli takich uprawnień do naszego serwera, żeby mogli zmieniać sposób uwierzytelniania albo usuwać hasło z konta ‘sa’.

Written by can_do

September 2nd, 2010 at 10:44 pm

Upgrade SQL Server 2008 R2 Express x64 do edycji Developer x64

without comments

Po uruchomieniu instalatora SQL Server 2008 R2 i wybraniu opcji aktualizacji SQL Servera nie mamy możliwości aktualizacji z SQL Server 2008 R2 Express Edition (64 bit) do SQL Server 2008 R2 Developer Edition (64 bit). Żeby móc przeprowadzić taką aktualizację, musimy w instalatorze zaznaczyć pozycję ‘Maintenance’ oraz wybrać ‘Edition Upgrade’. Szczegóły na załączonym strzale do ekranu:

upgrade-sql-server-2008-r2-express-to-developer-01

Sam proces aktualizacji przebiegł bez najmniejszego problemu, przeklikałem go automatycznie (tak, nie czytałem wszystkiego, tylko szukałem opcji ‘Select All’ lub ‘Next’) i zakończył się powodzeniem. Ponieważ trwało to wszystko bardzo krótko, co wydało mi się podejrzane, postanowiłem się temu przyjrzeć bliżej. I co się okazuje? Sam proces zakończył się powodzeniem, gdybym nie przeleciał instalatora na szybko, to bym pewnie zauważył to, do czego później doszedłem.

Zapytanie SELECT @@VERSION zwraca:

Microsoft SQL Server 2008 R2 (RTM) – 10.50.1600.1 (X64)
    Apr  2 2010 15:48:46
    Copyright (c) Microsoft Corporation
    Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

Co siedzi w logu poinstalacyjnym?

User Input Settings:
  ACTION:                        EditionUpgrade
  …
  FEATURES:                      SQLENGINE,REPLICATION,FULLTEXT,RS,BIDS,SSMS,SNAC_SDK,OCS,CE_RUNTIME,CE_TOOLS,SNAC,BROWSER,WRITER

Brakuje mi tu chociażby usług BI-owych. SQL Server Agent też się nie chce odpalić ;-) Ale już bazę o rozmiarze początkowym 15 GB utworzył :-) No ale sam rozmiar bazy nie jest tu dla mnie benefitem, dla którego będę zostawiał takiego potworka zainstalowanego.

Teoretycznie mam 2 opcje do wyboru: odinstalować to coś i zainstalować od nowa, jak należy lub doinstalować składniki do tego co jest. Doinstalowanie składników wiąże się z tym, że mój serwer SQL-owy będzie działał w trybie WOW64 (o ile się wszystko ładnie doinstaluje).

Wybór jest prosty. Zaorać Expressa i postawić nówkę sztukę Developera :-)

Wniosek? Czytajmy komunikaty, nieważne że to nie produkcja oraz że to co widzimy, nie zawsze jest tym czym jest. Brak pytania o doinstalowanie komponentów jest w przypadku tej wersji aktualizacji mówiąc delikatnie niedopracowaniem.

Written by can_do

September 1st, 2010 at 10:51 pm

Energetyczny i darmowy szablon Power Pointa o tematyce SQL Server 2008

without comments

Mladen Prajdić na swoim blogu zamieścił szablon do Power Pointa o tematyce SQL Server. Mnie osobiście się on podoba z dwóch podobów: ma ciemną tonację oraz jako grafiki ma wstawione te ogniste kule z Experience The Energy. Szablon jest autorstwa Mladena i jest do darmowego wykorzystania.

Link do posta: http://weblogs.sqlteam.com/mladenp/archive/2009/05/07/Free-SQL-Server-2008-Powerpoint-dark-template.aspx (Free SQL Server 2008 Powerpoint dark template)

Link do szablonu: http://www.sqlteam.com/downloads/sqlserver2008_dark.zip

Link do darmowych narzędzi zebranych przez Mladena (jako przypomnienie) mogących odpicować nasze konsolety: http://weblogs.sqlteam.com/mladenp/archive/2007/11/20/Free-SQL-Server-tools-that-might-make-your-life-a.aspx (Free SQL Server tools that might make your life a little easier)

Written by can_do

August 31st, 2010 at 10:57 pm

Funkcja Trim w Excelu oraz w VBA to nie to samo

without comments

Funkcja Trim (znana również pod nazwą USUŃ.ZBĘDNE.ODSTĘPY) ma za zadanie usuwać wszystkie nadmiarowe spacje z tekstu wejściowego oraz z prawej i lewej strony tekstu. W środku zostawia tylko pojedyncze spacje. Ciekawostką jest fakt, że wbudowana funkcja arkuszowa tak właśnie działa. Inaczej się sprawa ma z funkcją Trim dostępną z poziomu VBA. Celowo nie napisałem, że chodzi o tę samą funcję, bo… działa trochę inaczej. Funkcja Trim wbudowana w VBA usuwa tylko spacje z prawej i lewej strony podanego tekstu, jest tylko połączeniem funkcji LTrim oraz RTrim.

Dla zobrazowania różnicy prosty przykład:

Sub TestTrimFunctions()
    Dim StringWithRedundantSpaces As String
    Dim StringWithoutRedundantSpaces1 As String
    Dim StringWithoutRedundantSpaces2 As String
   
    StringWithRedundantSpaces = "   Exa  mp     le text  with   space   s     "
   
    ‘remove redundant spaces via VBA Trim function
    StringWithoutRedundantSpaces1 = TrimVba(StringWithRedundantSpaces)
   
    ‘remove redundant spaces via worksheet built-in Trim function
    StringWithoutRedundantSpaces2 = TrimWorksheetBuiltIn(StringWithRedundantSpaces)
   
    ‘compare our result – module level Option Compare setting doesn’t matter in this case
    Debug.Print StringWithoutRedundantSpaces1 = StringWithoutRedundantSpaces2
End Sub

Function TrimVba(StrIn As String) As String
    TrimVba = Trim(StrIn)
End Function

Function TrimWorksheetBuiltIn(StrIn As String) As String
    TrimWorksheetBuiltIn = Application.WorksheetFunction.Trim(StrIn)
End Function

W oknie Immediate dostaniemy wartość… False. Ha! Znaleźliśmy błąd! Niekoniecznie. Na początku wygląda na błąd. Sprawdzenie w helpie funkcji dla arkusza oraz dla VBA wyjaśnia różnicę. Błąd to nie jest, tylko pytanie, dlaczego funkcja o tej samej nazwie i realizująca podobne działanie ma inną funkcjonalność w zależności od miejsca użycia?

Wniosek? Żeby uniknąć przykrych niespodzianek, zanim użyjemy w VBA funkcję, którą znamy z pracy z arkuszem (szczególnie jeśli pracujemy z Excelem w wersji EN) sprawdźmy ją w helpie, czy rzeczywiście jest to odpowiednik funkcji arkuszowej.

Written by can_do

August 31st, 2010 at 12:41 am

Posted in Excel VBA

Tagged with , ,

Zmienne środowiskowe – zapisywanie do arkusza Excela za pomocą VBA

without comments

Przy projektowaniu aplikacji w VBA czasami przydają się niektóre zmienne środowiskowe. Listę tych zmiennych można uzyskać w VBA za pomocą takiego oto krótkiego kodu:

Sub WypiszZmienneEnviron()
    Dim i As Byte
    i = 1
   
    Do Until Environ(i) = ""
        Cells(i, 1).Value = Environ(i)
        i = i + 1
    Loop
End Sub

Ten kod nie spełnia norm wysokiej jakości – dlaczego? ;-)

Written by can_do

August 27th, 2010 at 7:51 am

Posted in Excel VBA

Tagged with

Deklarowanie typu danych w VBA za pomocą znaku dodawanego na końcu nazwy zmiennej

without comments

Zmienne w VBA możemy deklarować na 2 sposoby. Pierwszy z nich to jawnie określany typ zmiennej. Drugi to dodanie na końcu nazwy zmiennej znaku deklarującego typ.

Nie wszystkie typy można deklarować w ten sposób. Poniżej zestawienie typów danych, które można deklarować za pomocą znaku dodawanego na końcu nazwy zmiennej:

Typ danych Znak dekalrujący typ
Integer %
Long &
Single !
Double #
Currency @
String $

 

Przykład:

Sub AlternatywneDeklarowanieZmiennych()
    Dim ZmiennaInteger%
    Dim ZmiennaLong&
    Dim ZmiennaSingle!
    Dim ZmiennaDouble#
    Dim ZmiennaCurrency@
    Dim ZmiennaString$
   
    Debug.Print TypeName(ZmiennaInteger) & "-"; TypeName(ZmiennaInteger%)
    Debug.Print TypeName(ZmiennaLong) & "-"; TypeName(ZmiennaLong&)
    Debug.Print TypeName(ZmiennaSingle) & "-" & TypeName(ZmiennaSingle!)
    Debug.Print TypeName(ZmiennaDouble) & "-"; TypeName(ZmiennaDouble#)
    Debug.Print TypeName(ZmiennaCurrency) & "-" & TypeName(ZmiennaCurrency@)
    Debug.Print TypeName(ZmiennaString) & "-" & TypeName(ZmiennaString$)
   
    ZmiennaInteger% = 2
    ZmiennaInteger = ZmiennaInteger + 2
    ZmiennaInteger% = ZmiennaInteger% + 1
End Sub

Do zmiennych deklarowanych za pomocą znaku dodawanego na końcu nazwy zmiennej możemy się odwoływać na 2 sposoby: podając jej nazwę wraz ze znakiem deklarującym typ oraz bez tego znaku, co pokazałem w 3 ostatnicj liniach przykładowej procedury. ZmiennaInteger% oraz ZmiennaInteger jest to ta sama zmienna.

Written by can_do

August 12th, 2010 at 1:14 pm

Posted in Office VBA

Tagged with

Specyfikacje i ograniczenia programu Excel

without comments

Excel 2010 w porównaniu do Excela 2007 niewiele się zmieniło jeżeli chodzi o specyfikacje i ograniczenia. Dodano 3 nowe ograniczenia (związane z nowymi funkcjonalnościami) oraz zniesiono 3 limity dla punktów danych serii danych wykresów. Poniżej tabela zawierająca zestawienie specyfikacji i limitów – jak widać rewolucji nie ma.

Specifications and limits Excel 2010 Excel 2007
FEATURE MAXIMUM LIMIT MAXIMUM LIMIT
Open workbooks Limited by available memory and system resources Limited by available memory and system resources
Worksheet size 1,048,576 rows by 16,384 columns 1,048,576 rows by 16,384 columns
Column width 255 characters 255 characters
Row height 409 points 409 points
Page breaks 1,026 horizontal and vertical 1,026 horizontal and vertical
Total number of characters that a cell can contain 32,767 characters 32,767 characters
Characters in a header or footer 255 255
Sheets in a workbook Limited by available memory (default is 3 sheets) Limited by available memory (default is 3 sheets)
Colors in a workbook 16 million colors (32 bit with full access to 24 bit color spectrum) 16 million colors (32 bit with full access to 24 bit color spectrum)
Named views in a workbook Limited by available memory Limited by available memory
Unique cell formats/cell styles 64 64
Fill styles 256 256
Line weight and styles 256 256
Unique font types 1,024 global fonts available for use; 512 per workbook 1,024 global fonts available for use; 512 per workbook
Number formats in a workbook Between 200 and 250, depending on the language version of Excel that you have installed Between 200 and 250, depending on the language version of Excel that you have installed
Names in a workbook Limited by available memory Limited by available memory
Windows in a workbook Limited by available memory Limited by available memory
Panes in a window 4 4
Linked sheets Limited by available memory Limited by available memory
Scenarios Limited by available memory; a summary report shows only the first 251 scenarios Limited by available memory; a summary report shows only the first 251 scenarios
Changing cells in a scenario 32 32
Adjustable cells in Solver 200 200
Custom functions Limited by available memory Limited by available memory
Zoom range 10 percent to 400 percent 10 percent to 400 percent
Reports Limited by available memory Limited by available memory
Sort references 64 in a single sort; unlimited when using sequential sorts 64 in a single sort; unlimited when using sequential sorts
Undo levels 100 100
Fields in a data form 32 32
Workbook parameters 255 parameters per workbook 255 parameters per workbook
Items displayed in filter drop-down lists 10 not available in this version
Noncontiguous cells that can be selected 2,147,483,648 cells not available in this version
Calculation specifications and limits
FEATURE MAXIMUM LIMIT MAXIMUM LIMIT
Number precision 15 digits 15 digits
Smallest allowed negative number -2.2251E-308 -2.2251E-308
Smallest allowed positive number 2.2251E-308 2.2251E-308
Largest allowed positive number 9.99999999999999E+307 9.99999999999999E+307
Largest allowed negative number -9.99999999999999E+307 -9.99999999999999E+307
Largest allowed positive number via formula 1.7976931348623158e+308 1.7976931348623158e+308
Largest allowed negative number via formula -1.7976931348623158e+308 -1.7976931348623158e+308
Length of formula contents 8,192 characters 8,192 characters
Internal length of formula 16,384 bytes 16,384 bytes
Iterations 32,767 32,767
Worksheet arrays Limited by available memory Limited by available memory
Selected ranges 2,048 2,048
Arguments in a function 255 255
Nested levels of functions 64 64
User defined function categories 255 255
Number of available worksheet functions 341 341
Size of the operand stack 1,024 1,024
Cross-worksheet dependency 64,000 worksheets that can refer to other sheets 64,000 worksheets that can refer to other sheets
Cross-worksheet array formula dependency Limited by available memory Limited by available memory
Area dependency Limited by available memory Limited by available memory
Area dependency per worksheet Limited by available memory Limited by available memory
Dependency on a single cell 4 billion formulas that can depend on a single cell 4 billion formulas that can depend on a single cell
Linked cell content length from closed workbooks 32,767 32,767
Earliest date allowed for calculation January 1, 1900 (January 1, 1904, if 1904 date system is used) January 1, 1900 (January 1, 1904, if 1904 date system is used)
Latest date allowed for calculation December 31, 9999 December 31, 9999
Largest amount of time that can be entered 9999:59:59 9999:59:59
Charting specifications and limits
FEATURE MAXIMUM LIMIT MAXIMUM LIMIT
Charts linked to a worksheet Limited by available memory Limited by available memory
Worksheets referred to by a chart 255 255
Data series in one chart 255 255
Data points in a data series for 2-D charts Limited by available memory 32
Data points in a data series for 3-D charts Limited by available memory 4
Data points for all data series in one chart Limited by available memory 256
PivotTable and PivotChart report specifications and limits
FEATURE MAXIMUM LIMIT MAXIMUM LIMIT
PivotTable reports on a sheet Limited by available memory Limited by available memory
Unique items per field 1,048,576 1,048,576
Row or column fields in a PivotTable report Limited by available memory Limited by available memory
Report filters in a PivotTable report 256 (may be limited by available memory) 256 (may be limited by available memory)
Value fields in a PivotTable report 256 256
Calculated item formulas in a PivotTable report Limited by available memory Limited by available memory
Report filters in a PivotChart report 256 (may be limited by available memory) 256 (may be limited by available memory)
Value fields in a PivotChart report 256 256
Calculated item formulas in a PivotChart report Limited by available memory Limited by available memory
Length of the MDX name for a PivotTable item 32,767 32,767
Length for a relational PivotTable string 32,767 32,767
Items displayed in filter drop-down lists 10 not available in this version
Shared workbook specifications and limits
FEATURE MAXIMUM LIMIT MAXIMUM LIMIT
Users who can open and share a shared workbook at the same time 256 256
Personal views in a shared workbook Limited by available memory Limited by available memory
Days that change history is maintained 32,767 (default is 30 days) 32,767 (default is 30 days)
Workbooks that can be merged at one time Limited by available memory Limited by available memory
Cells that can be highlighted in a shared workbook 32,767 32,767
Colors used to identify changes made by different users when change highlighting is turned on 32 (each user is identified by a separate color; changes made by the current user are highlighted with navy blue) 32 (each user is identified by a separate color; changes made by the current user are highlighted with navy blue)
Excel tables in a shared workbook 0 (zero) -  NOTE   A workbook that contains one or more Excel tables cannot be shared. 0 (zero)

 

Specyfikacje i ograniczenia dla Excela 2010 oraz Excela 2007 zamieściłem również w arkuszu do pobrania.

excel-worksheet-and-workbook-specifications-and-limits.xlsx

excel-worksheet-and-workbook-specifications-and-limits.xls

Written by can_do

August 11th, 2010 at 9:54 pm

Posted in Excel

Tagged with ,

Instalacja bazy Northwind ze skryptu

without comments

Kolega C3PO ostatnio trochę przewrotnie zapytał: ‘Gdzie te czasy, kiedy MS dawał skrypt instnwnd.sql, który stawiał bazę Northwind i zawsze działał bezbłędnie? :-)

Nie wiem czy teraz MS nie daje, natomiast skrypt sobie u mnie grzecznie leży na dysku od dłuższego czasu. Chyba zaczynam myśleć jak starsi ludzie: ‘wszystko się przyda, kiedyś’. Kiedyś pewnie będę miała komórkę, taką drewnianą, póki co różne rzeczy upycham po komputerze.

Jeśli chcesz mieć na swoim SQL Serverze bazę w stylu retro, to bardzo proszę: skrypt do instalacji przykładowej bazy Northwind, z czasów królowania Shiloha ;-) Zalety instalacji bazy Northwiind vs. AdventureWorks są następujące:

  • jeden skrypt potrzebny do całej instalacji,
  • wielkość skryptu 2 MB z groszkiem, w porównaniu do ponad 100 MB skryptu i danych potrzebnych do instalacji bazy AdventureWorks OLTP,
  • wielkość bazy po instalacji to niecałe 5 MB bazy Northwind vs. ponad 180 MB bazy AdventureWorks OLTP,
  • nieskomplikowany schemat bazy.

Do pewnego momentu nauki SQL-a ta przykładowa baza wystarczy :-)

Sama instalacja polega na uruchomieniu skryptu i… voila! Skrypt instaluje bazy w tej samej lokalizacji, co baza master, więc jeśli chcemy mieć nasze przykładowe bazy w innej lokalizacji, to musimy w tym kawałku (linie 12-15):

DECLARE @device_directory NVARCHAR(520) 
SELECT @device_directory = SUBSTRING(PHYNAME, 1, CHARINDEX(N’master.mdf’, LOWER(PHYNAME)) - 1) 
FROM   MASTER.DBO.SYSDEVICES 
WHERE  (NAME = N’master’)

 

… zakomentować instrukcję SELECT i poniżej wstawić przypisanie ścieżki, gdzie chcemy mieć zainstalowną przykładową bazę Northwind do zmiennej @device_directory, np:

SELECT @device_directory = ‘C:\moje_fajne_bazy\’

Parę sekund działania skryptu i już mamy gotową do użytku przykładową bazę Northwind.

Written by can_do

July 19th, 2010 at 8:00 pm

Posted in SQL Server

Tagged with ,

Instalacja przykładowych baz AdventureWorks 2008 R2 (za pomocą skryptu)

with 2 comments

Po pobraniu najnowszej wersji przykładowej bazy AdventureWorks 2008 R2 zaprojektowanej dla SQL Server 2008 R2 uruchamiamy plik AdventureWorks2008R2_RTM.exe, który zaczyna nam rozpakowywać ‘coś tam – coś tam’. Nie wnikamy w szczegóły…

install-adventure-works-2008-r2-01

… pewnie po rozpakowaniu pokaże nam się nowy instalator znany od wersji 2008 SQL Servera. Standardowo najpierw licencja (którą de facto już musieliśmy zakaceptować, żeby pobrać plik) do akceptacji i klikamy ‘Next’.

install-adventure-works-2008-r2-02

Instalator chwilę myśli, myśli, myśli… I za chwilę mówi: Sorry stary, dalej nie idę. Ludki z Redmond zapomnieli mnie dopracować ;-) Treść tej wypowiedzi (lekko zmienionej) poniżej:

install-adventure-works-2008-r2-03

Po kliknięciu ‘OK’ instalator kończy pracę. Próbę powtórzyłem jeszcze dwukrotnie, wcześniej sprawdziłem czy serwisy eskuelowe chodzą bez zarzutu oraz czy mogę zalogować się via SSMS. Wszystko gra (oprócz tego niedopieszczonego instalatora).

Nie zastanawiałem się długo nad przyczyną błędu instalatora, tylko przypomniałem sobie pewnie odcinek Pomysłowego Dobromira, w którym Dobromir pomyślał: ‘A może by tak zainstalować bazy AdventureWorks’ ręcznie, ze skryptu? :-)

No dobra, ale skąd wziąć skrypt i dane do wypełnienia tabel? Wracamy do momentu, kiedy uruchomiliśmy pobrany plik i teraz już wnikamy w szczegóły. Instalator nas nie zapytał (za to ludki z Redmond powinni dostać po łapkach) gdzie to rozpakować, tylko sam sobie wybrał miejsce. Jak je najłatwiej znaleźć? Przed zakończeniem pracy instalatora wyszukujemy folder zawierający plik z danymi o nazwie znanej z poprzedniej wersji. Możemy się zdarzyć, że nie trafimy, bo to przecież nowo zaprojektowana baza. Żeby mieć pewnik, używamy nazwy, którą udało nam się zapamiętać podczas rozpakowywania. Jak ktoś wolno czyta, zawsze pozostaje zrobienie zrzutu ekranu podczas rozpakowywania ;-) Po zlokalizowaniu katalogu kopiuejmy zawartość do innej lokalizacji, ponieważ ten katalog zostanie usunięty po zakończeniu pracy instalatora.

W moim przypadku był to katalog C:\Users\[MójFajnyUżytkownik]\AppData\Local\Temp\WZSE0.TMP

Mamy już wszystkie (?) poptrzebne dane, możemy się zabrać za instalację najnowszych przykładowych baz AdventureWorks 2008 R2 na SQL Server 2008 R2 (Express Edition with Advanced Services).

No to do roboty! Uruchamiamy SQL Server Management Studio i z katalogu AdventureWorks 2008R2 OLTP otwieramy skrypt instawdb.sql, w którego nagłówku czytamy:

File:     instawdb.sql

Summary:  Creates the AdventureWorks 2008R2 OLTP sample database.

Date:     June 14, 2008
Updated:    October 13, 2009

SQL Server Version: 10.50.1341.02

Plik dosyć długo nieaktualizowany, wykonanie instrukcji SELECT @@VERSION pokazuje nam, że mamy dużo nowszy build niż serwer na którym przygotowywane były najnowsze przykładowe bazy.

Poniżej lista żądań skryptu:

– Be sure to enable FILESTREAM before running this script!
– Be sure to enable FULL TEXT SEARCH before running this script!

– WARNING: THIS SCRIPT MUST BE RUN IN SQLCMD MODE INSIDE SQL SERVER MANAGEMENT STUDIO. <<

Sprawdzamy czy mamy odblokowane FileStream oraz czu usługa FullTextSearch jest uruchomiona – W Expressie nazywa się MSSQLFDLauncher$NazwaInstancji, na liście usług widać ją jako SQL Full-text Filter Daemon Launcher (NazwaInstancji).

Następnie przełączamy się w tryb SqlCmd. Zgodnie z instrukcją w komentarzach skryptu odkomentowujemy 2 zmienne (zaznaczone) i podajemy swoje ścieżki w razie potrzeby.


install-adventure-works-2008-r2-04

Zmienna SqlSamplesDatabasePath – ścieżka do folderu, gdzie ma być zainstalowana przykładowa baza AdventureWorks 2008 R2 , zmienna SqlSamplesSourceDataPath – ścieżka do folderu, w którym znajdują się katalogi z danymi dla poszczególnych baz przykładowych. Przykładowo u mnie będzie to E:\instalacyjne\SQL Server\AdventureWorks\Samples\AdventureWorks 2008 R2\WZSE0.TMP. WZSE0.TMP to katalog, który podebraliśmy instalatorowi, zanim się na nas wypiął. Jeśli skopiowaliśmy całą zawartość utworzoną przez instalator, to powinniśmy mieć taką strukturę wewnątrz tego katalogu:

install-adventure-works-2008-r2-05

Jeżeli spróbujemy sparsować nasz skrypt, to otrzymamy komunikat:

Msg 911, Level 16, State 1, Line 2
Database ‘AdventureWorks2008R2′ does not exist. Make sure that the name is entered correctly.
** An error was encountered during execution of batch. Exiting.

Nie jest to żaden błąd, parser nie umie sobie doczytać, że baza której nie ma jest tworzona prawie na początku skryptu :-) Z tego co pamiętam uruchomienie całego skryptu nie spowoduje błędu, natomiast w tym przypadku uruchomimy do w 2 częściach – utworzenie samej bazy oraz napełnienie danymi. Nieee, szkoda czasu, odpalam zatem od razu cały skrypt.

Skrypt trochę pomieszał i po 52 sekundach (zapomniałem dorzucić węgla) napisał: Query executed successfully. Baza AdventureWorks 2008 R2 została zainstalowana. Pozostałe przykładowe bazy instalujemy w podobny sposób.

Schemat dla bazy AdventureWorks 2008 R2:

AdventureWorks2008

Zastanawia mnie tylko tylko opis na schemacie… ;-)

Written by can_do

July 15th, 2010 at 11:46 pm

Logowanie do SQL Server, gdy brak jest domyślnej bazy

with 2 comments

Jeżeli spróbujemy się zalogować do SQL Servera, na którym domyślna baza przypisana do użytkownika jest niedostępna (np. została usunięta), to serwer opluje nas takim oto komunikatem:

logon-to-sql-without-default-db-01

Komunikat może wydawać się przerażający z 2 powodów:

  • prawdopodobnie nie spoedziewaliśmy się takiego komunikatu – oczywista oczystość :-)
  • jak pojawia się stres nie umiemy czytać komunikatów ze zrozumieniem – serio, tak jest.

Co należy zrobić w takim przypadku? Nie, nie trzeba przeinstalowywać SQL Servera ;-) Nie ma też konieczności łączyć się z serwerem w mniej oczywisty sposób niż przez SQL Server Management Studio. Po potwierdzeniu komunikatu jak na obrazku należy kliknąć przycisk ‘Options’ kartę ‘Connection Properties’, jeśli się nie aktywowała sama.

logon-to-sql-without-default-db-02

Na samej karcie należy w pole ‘Connect to database’ wpisać nazwę bazy, do której chcemy się zalogować jako domyślnej. Oczywiście musimy znać tę nazwę I mieć wcześniej przyznany dostęp do bazy. Jeśli nie znamy nazwy żadnej innej bazy, to zawsze możemy spróbować zalgować siędo jednej z systemowych baz danych: master, model, msdb lub tempdb.

Written by can_do

July 14th, 2010 at 9:24 pm