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 »
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 »
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:
Czytaj dalej »
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 »
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!
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:
Czytaj dalej »
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 »