Archiwum

Archive for the ‘SQL’ Category

SQL Server i programista .NET–czyli jak uruchomić procedurę składowaną z getdate i nie zwariować

Kwiecień 17, 2015 Dodaj komentarz

Dzisiaj chciałem sobie potestować procedurę składowaną, która ma następującą definicję:

CREATE PROCEDURE [dbo].[Event_GetDetailedInfo]
    @UserId uniqueidentifier,
    @FromDate datetime,
    @City nvarchar(4000),
    @Tag nvarchar(4000),
    @LastEventId uniqueidentifier

 

używając oto takiego testu:

exec [dbo].[Event_GetDetailedInfo1]
    @UserId = NULL,
    @FromDate  = getdate(),
    @City  = ‚Warsaw’,
    @Tag = ‚c#’,
    @LastEventId  = NULL

 

i jakież było moje zdziwienie kiedy dostałem błąd:

Msg 102, Level 15, State 1, Line 8
Incorrect syntax near ‚)’.

Wyszło na to, że mam błąd przy GetDate(), a tak na prawdę przy nawiasach…choć GetDate ma przecież wymagane nawiasy…

Wyszło na to, że nie mozna przekazać wyniku funkcji do uruchomienia metody – dobrze wiedzieć!!

Aby zadziałało wpisuję:

DECLARE @tmp DATETIME

SET @tmp = GETDATE()

exec [dbo].[Event_GetDetailedInfo1]
    @UserId = NULL,
    @FromDate  = @tmp,
    @City  = ‚Warsaw’,
    @Tag = ‚c#’,
    @LastEventId  = NULL

 

i działa.

Kategorie:SQL

SQL Server LocalDB–po co to komu? Zalety i… błędy.

Ostatnio wiele razy przewinęło się pytanie o LocalDB – wiec spieszę to wytłumaczyć to zjawisko. Nie ma wątpliwości, ze LocalDB pojawiło się nie proszone, nie było mocno wyczekiwane, a tym bardziej nie do końca dobrze zostało wyjaśnione grupie odbiorców, dla której ten produkt jest – Programistom.

Jakiś czas temu Microsoft wpadł na pomysł, by dać programistom bazę danych, która ma dużo większe możliwości niż SQL Compact Edition, ale jednocześnie zachować kompatybilność z silnikiem pełnego SQL, której edycja Compact nie ma.

Naturalne pytanie jakie teraz się powinno pojawić, to gdzie w tym wszystkim jest SQL Express Edition, który dotychczas pełnił właśnie role narzędzia dla programistów, miał wsparcie silnika SQL i często to on był głównym silnikiem na “produkcji” niewielkich aplikacji.

Sprawdzamy, czy to mamy

Jest spora szansa, że mamy już zainstalowane LocalDB na naszym komputerze, możemy to sprawdzić próbując się podpiąć do bazy poprzez

(localdb)\v11.0

image

Jeżeli nam się udało to możemy sobie pogratulować – coś zainstalowało LocalDB na Naszym komputerze. Jeżeli nie udało sie, nic straconego, instalatory znajdują się tutaj.

Dużym atutem jest to, że możemy zainstalować localDB bez konieczności klikania, jest opcja tak zwanej cichej instalacji:

msiexec /i SqlLocalDB.msi /qn IACCEPTSQLLOCALDBLICENSETERMS=YES

dla dociekliwych powiem tylko, że da się zbudować w dość intuicyjny sposób także connection string:

Server=(LocalDB)\v11.0; Integrated Security=true ;

a jak mamy bazę danych to możemy jeszcze do niego dodać:

AttachDbFileName=C:\Bazy\Baza1.mdf”

Instancje

Ten wpis v11.0 to tak zwana automatyczna instancja, do której możemy się podpiąć po instalacji LocalDB, nic nie stoi na przeszkodzie byśmy stworzyli sobie dodatkowe instancje i odseparowali użytkowników, bazy, produkty od siebie na czas prac programistycznych.

Dla przypomnienia instancje w SQL 2012 Express zostały oznaczone jako depreciated. co automatycznie powoduje to, że jak ktoś używał tego segregowania baz, będzie musiał teraz przejść na LocalDB, bo to właśnie jedna z jego opcji.

Jeżeli chcemy dodać / usunąć instancje wchodzimy do cmd.exe (linia poleceń) i wpisujemy:

image.png

Powyżej stworzyłem dwie instancje, dla dwóch swoich firm by odseparować projekty (bazy) jakie używam w swoich projektach.

Jak pójdziemy do SQL Management Studio zobaczymy, że będziemy mogli się podłączyć do nowo powstałych instancji w taki sam sposób, jak przed chwilą do (localdb)\v11.0

image.png

i efekt:

image.png

Kompatybilność

LocalDB został wymyślony trochę później niż wydano .NET w wersji 4 to też ta wersja nie obsługuje tej edycji SQL. By włączyć obsługę należy doinstalować aktualizację do .NET Framework 4.0 – tutaj też warto podkreślić, że celowo ludzie z Microsoft nie dołączyli jej do instalatora LocalDB, chcąc uniknąć restartu podczas procesu instalacji.

Aktualizacja dla .NET 4 jest tutaj.

.NET 4.5 wspiera w pełni LocalDB.

Co mamy w środku?

LocalDB podobnie jak silnik SQL Express obsługuje:

  • XML
  • ADO.NET
  • ADO.NET Sync Framework
  • LINQ
  • ODBC
  • OLEDB
  • Distributed Transactions
  • Nielimitowane połączenia lokalnie (nie ma możliwości łączenia się zdalnie)
Limity?

Nie mogło zabraknąć kilku limitów, które spotkamy też w bazach takich jak SQL Express – czyli po prostu darmowych:

  • Limit bazy to 10GB
  • Obsługa tylko jednego procesora
  • Obsługuje tylko połączenia lokalne (named pipes)
Porównujemy

Sprawdźmy jak to wszystko się ma do innych edycji SQL

co jeszcze dokładniej nam mówi o braku wielkich różnic między edycjami SQL Express i LocalDB, a świadczy o kilku minusach w stosunku do Compact.

Znane błędy

Na razie jeden,który mnie trochę “boli” jako programistę, a nie klepacza SQLa. Nie działa debugowanie kodu SQL, tu jest błąd zgłoszony i potwierdzony:

image.png

Podsumowanie

Coś czego ja bym oczekiwał to magii jaką Microsoft wykonał tworząc Silverlight, kiedy włożył w jedną kilku megabajtową paczkę rozszerzenia do przeglądarek internetowych nie tylko dla Windows, ale też dla MAC OS dość kompletne środowisko uruchomieniowe .NET. Dalej czekam na coś równie małego jak Compact SQL, ale z podobną mocą do pełnego SQL Server.

Dodatkowo wymagałbym produktu, który programista może zainstalować na swoim komputerze bez uprawnień administratora (do LocalDB potrzebuje ich) i/lub silnika, który wpina się do aplikacji plikiem .dll bez potrzeby instalowania serwera na komputerze.

Kategorie:Microsoft, SQL Tagi: ,

Masowe dodawanie adresów IP i MAC do bazy SQL

Niedziela, słoneczny dzień – jeden z pierwszych w tym roku – a tu mi przytrafiło się siedzieć przy bazie danych MS SQL przy dodawaniu zakresów:

Czytaj dalej…

Kategorie:SQL