2011-11-19
SQLCmd to polecenie pozwalające na uruchamianie w trybie wsadowym skryptów SQL. Można go użyć np w edycji Express, do regularnego wykonywania kopii zapasowej (co było już opisane na mobilo/mobilo24). Jak jednak zbadać, jaki jest wynik działania polecenia SQLCmd z poziomu „dos-owego batch-a”, który uruchomił skrypt?
Załóżmy, że w batch-u masz polecenie:
sqlcmd -i D:\skrypty\kopia.sql -o d:\tmp\kopia.out
Jeżeli dojdzie do błędu związanego np. z brakiem pliku d:\skrypty\kopia.sql, to sqlcmd zwróci status błędu i możesz go sprawdzić badając zawartość zmiennej systemu operacyjnego %errorlevel%

Czytaj dalej »
2011-11-14
Pytanie od znajomej, którą zapytał jej przełożony:
Czy da się posortować akrusze w skoroszycie Excela alfabetycznie?
Ano da się. Makrem. Rozwiązanie pochodzi z tego miejsca: http://www.teachexcel.com/free-excel-macros/m-49,sort-worksheet-tabs.html
Na wszelki wypadek makro sortujące arkusze umieszczam poniżej: Czytaj dalej »
2011-11-11
Można na stronie, która zawiera przycisk w Page_Load dopisać:
LinkButton1.Attributes.Add(„onclick”, „window.open(’new.aspx’,”,”); return false;”);
window.open to polecenie JavaScript, która otwiera nowe okno, a w nim stronę new.aspx.
return false widoczne na koncu powoduje, że obsłużenie kliknięcia odbywa się na kliencie, bez postback-a.
2011-11-11
Zamierzasz utworzyć procedurę, którą będzie uruchamiał pewien nowy użytkownik. Tworzymy więc konto użytkownika:
USE Test
GO
CREATE USER TestUser WITHOUT LOGIN
GO
Teraz dla użytkownika utworzymy procedurę i nadamy uprawnienia dla tego użytkownika:
CREATE PROCEDURE TestIt
AS
BEGIN
SELECT file_id, name
FROM sys.database_files
END
GRANT EXECUTE ON TestIt TO TestUser
GO
Uwaga! Uruchamiając ten kod zaznacz go w całości (nie kawałek po kawałku). Czytaj dalej »
2011-11-05
Rzeczywiście, jeżeli w tabeli asp umieścisz inne kontrolki asp, to nie ma możliwości wyświetlenia properties dla tych kontrolek. Nie działa również F4. Jednyna możliwość to ręczne wypełnianie właściwości, czego przecież chcemy uniknąć.
Jeżeli Twoim celem jest po prostu rozmieszczenie kontrolek na stronie, to lepiej użyj zwykłej tabelki (tej HTML-owej, a nie ASP). W przypadku tej tabeli wszystko działa jak należy!
2011-11-04
Strona wykorzystuje szablon CSS. W moim przypadku musiałem otworzyć plik Styles/Site.css, a w nim dokonać zmiany szerokości w kilku miejscach:
- body
- page
- header
- main
- footer
Wszędzie musiała się pojawić linijka poszerzająca moją stronę na 1200 pikseli:
width: 1200px;
Mimo tych zmian strona nie od razu reagowała na zmianę szerokości. W IE musiałem wyczyścić cache przeglądarki.
2011-10-29
Ten przykład pokaże, że co innego jest napisać i dobrze wykorzystać procedurę składowaną z parametrami, a co innego ten sam kod wykonać jako zapytanie ad-hoc, nawet jeżeli pewne wartości do zapytania będą przekazywane poprzez zmienne.
Będziemy pracować w testowej bazie danych:
use AdventureWorks2008R2
Zauważ, jak zachowuje się poniższe zapytanie:
SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate BETWEEN '2005-07-21′ AND '2005-07-22′
jeśliby zajrzeć do planu wykonania zobaczysz, że robi table scan. Gdyby nasi użytkownicy mieli częściej wykonywać tego rodzaju analizy, to możemy dla nich utworzyć indeks:
CREATE NONCLUSTERED INDEX IX_SalesOrderHeader_OrderDate
ON Sales.SalesOrderHeader(OrderDate)
Zobaczmy czy nasze zapytanie zauważyło tę zmianę:
SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate BETWEEN '2005-07-21′ AND '2005-07-22′
O tak. Tym razem optymalizator zaproponował, że wykona nonclustered index seek. Super! To zobaczmy, co się stanie, jeżeli sparametryzujemy kwerendę:
–zmieniam date na zmienna:
DECLARE @d1 DATETIME = '2005-07-21′
DECLARE @d2 DATETIME = '2012-07-22′
SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate BETWEEN @d1 AND @d2;
Zapytanie zadziałało, ale wykonany został table scan! Co najmniej, jakby serwer nie zauważył, że w zmiennych nadal znajdują sie te same dane. Na całe szczęście dysponujemy hintami (wskazówkami), którymi można wskazać serwerowi, że zapytanie ma wykonać tak, jakby zmienne miały określone wartości. Wspomniany hint to OPTIMIZE FOR. Zaobserwuj plan wykonania tego zapytania: Czytaj dalej »