Jak zabić procesy użytkowników korzystających z bazy danych?

2013-09-20

Moje rozwiązanie, to przestawić bazę w tryb SINGLE USER kończąc natychmiast wszystkie otwarte transakcje:

ALTER DATABASE AdventureWorks SET SINGLE_USER WITH ROLLBACK IMMEDIATE

a potem przełączyć bazę w tryb MULTI_USER:

ALTER DATABASE AdventureWorks SET MULTI_USER

 

Rozwiązanie z http://www.sqlservercentral.com/articles/Backup+%2f+Restore/71272/ Czytaj dalej »

By Rafał Kraik in SQL

Audyt w oparciu o trigger

2013-09-19

Budując audyt możesz skusić się na śledzenie modyfikacji rekordów w taki sposób aby zapamiętać zmianę każdego rekordu, jego wstawienie lub usunięcie tak, aby wiadomo było kto i kiedy był autorem jakiej poprawki. Łatwo to osiągnąć stosując triggery, ale pamiętaj, że nie jest to w 100% poprawny audyt, bo triggery administrator może wyłączyć, albo może skasować dane zalogowane w tabelce śledzącej zmiany.

Załóżmy że masz tabelę:

CREATE TABLE dbo.Descriptions
(DescriptionId INT IDENTITY PRIMARY KEY,
DescriptionText NVARCHAR(1000))

Chcesz śledzić każde wstawienie, modyfikację i usunięcie rekordu, więc możesz zdefiniować tabelkę log monitorującą te zmiany: Czytaj dalej »

By Rafał Kraik in SQL

Excel: Warunkowe ukrywanie serii na wykresie

2013-09-12

Warunkowe ukrywanie serii na wykresie

Załóżmy, że masz już utworzony wykres prezentujący kilka serii danych. Chcesz dać użytkownikowi twojego wykresu możliwość zaznaczenia pola w taki sposób, aby na wykresie pokazywać tylko i wyłącznie serie przez niego wybrane.

1. Tyle razy ile masz serii wykonaj dodanie na arkusz formantu pole wyboru:

Wstawianie formantu Czytaj dalej »

By Rafał Kraik in Helpdesk

TOP od tyłu (z końcowymi rekordami)

2013-09-12

Trzeba uporządkować rekordy wg pewnej kolumny, w naszym przykładzie dajmy na to wg orderid. Spośród tych rekordów chcemy wybrać tylko 5 ostatnich. Ha nic w tym trudnego, wystarczy takie zapytanie:

SELECT TOP(5) orderid FROM Sales.Orders
ORDER BY ordered DESC

…tylko, że użytkownik chce zobaczyć te rekordy ułożone w kolejności rosnącej. Jeśli w zapytaniu zmienisz DESC na ASC to TOP(5) wybierze 5 rekordów z najniższym id, a nam chodziło o najwyższe…

Z pomocą przychodzi podzapytanie. Mianowicie z rekordów zwróconych w zapytaniu powyżej wybierzmy jeszcze raz tych 5 rekordów i ułóżmy je po prostu w innej kolejności: Czytaj dalej »

By Rafał Kraik in SQL

Niespójność w PARSE i ISNUMERIC

2013-09-12

Wydawać by się mogło, że jeśli funkcja ISNUMERC stwierdziła, że przekazany w argumencie tekst jest poprawnym wyrażeniem numerycznym, to funkcja PARSE powinna umieć ten napis poprawnie skonwertować na liczbę. Tymczasem:

SELECT ISNUMERIC(‘1E3’) zwraca true

SELECT PARSE(‘1E3 As FLOAT) zwraca 1000, czyli póki co wszystko działa.

Ale:

SELECT ISNUMERIC(‘1+E3’) zwraca true

SELECT PARSE(‘1+E3 As FLOAT) zwraca błąd. I posprzątane!

 

By Rafał Kraik in SQL

SSRS i VB Programowanie Reporting Services cz.4 – samodzielne rozszerzenie Reporting Services o własny kod

2013-09-05

Jeśli zachodzi potrzeba napisania własnej funkcji do określonego raportu w Reporting Services, to możesz też skorzystać z zakładki Code dostępnej we właściwościach raportu. Wpisz tu po prostu dowolną funkcję korzystając z Visual Basic:

code1 Czytaj dalej »

By Rafał Kraik in SSRS

SSRS i C# Programowanie Reporting Services cz.3 – samodzielne rozszerzenie Reporting Services o własny kod

2013-09-05

Co zrobić, jeżeli w Reporting Services chcesz skorzystać z funkcji, która została zaimplementowana w C# lub VB? Jak zwykle prosto. Tworzysz projekt Class Library:

namespace ClassLibrary1
{
   public class  Class1
   {
      public static string DoThis()
      {
         return "Hello World!";
      }
   }
} Czytaj dalej »
By Rafał Kraik in SSRS