24 KB Speicher werden für eine User Connection allokiert. Nun, das hört sich erst einmal nicht viel an und in den allermeisten Umgebungen wird man sich wahrscheinlich auch nicht näher damit befassen. Allerdings gibt es ein Szenario, bei dem dieser Wert unter Umständen eine Rolle spielen kann.
Keine Chance!
Jeder Fehler innerhalb des Triggers beendet diesen, die zugrundeliegende Transaktion und den Batch.
Original von Erland Sommarskog; deutsche Übersetzung von Frank Kalis
Eine sehr weitverbreitete Anforderung an ein Informationssystem ist es, eine oder mehrere Funktionen zu haben, bei denen der Benutzer in der Lage ist, die Daten durch freie Auswahl möglichst vieler verschiedener Kriterien zu durchsuchen. Dies ist eine enorme Herausforderung, da Sie nicht nur den gewünschten Output produzieren müssen, sondern auch die Antwortzeiten innerhalb eines akzeptablen Zeitrahmens halten müssen, zumindest bei häufig verwendeten Suchen. Zu guter Letzt muss der Code leicht zu warten sein, damit neue Wünsche und Anforderungen leicht implementiert werden können.
SET NOCOUNT ON CREATE TABLE #temp_table ( hm VARCHAR(5) ) INSERT #temp_table VALUES('8:30') INSERT #temp_table VALUES('5:01') INSERT #temp_table VALUES('12:59') INSERT #temp_table VALUES('7:20') SET NOCOUNT OFF SELECT CONVERT(VARCHAR, SUM(DATEDIFF(ss, '1900-01-01 00:00', CONVERT(DATETIME, hm)))/3600) + ':' + CONVERT(VARCHAR, (SUM(DATEDIFF(ss, '1900-01-01 00:00', CONVERT(DATETIME, hm)))%3600)/60) FROM #temp_table DROP TABLE #temp_table ------------------------------------------------------------- 33:50 (1 row(s) affected)
Vor einiger Zeit habe ich auf SQLTeam.com etwas sehr Nützliches entdeckt. Die Generierung einer sequentiellen Nummerierung mit Hilfe eines einzelnen UPDATE Statements.
SET NOCOUNT ON
CREATE TABLE SEQ_T
(
col1 INT DEFAULT 0
)
DECLARE @SEQUENCE INT
SET @SEQUENCE = 0
WHILE @SEQUENCE <=10
BEGIN
INSERT INTO SEQ_T DEFAULT VALUES
SET @SEQUENCE = @SEQUENCE+1
END
SET NOCOUNT OFF
SELECT * FROM SEQ_T
SET @SEQUENCE = 0
UPDATE SEQ_T SET @SEQUENCE = col1 = @SEQUENCE + 1
SELECT * FROM SEQ_T
DROP TABLE SEQ_T
col1
-----------
0
0
0
0
0
0
0
0
0
0
0
(11 row(s) affected)
(11 row(s) affected)
col1
-----------
1
2
3
4
5
6
7
8
9
10
11
(11 row(s) affected)
...einziger Nachteil ist, dass man nicht explizit in der Lage ist, die Sortierung vorzugeben.
Um schnell mall einen Überblick über die umfangreichsten Tabellen in einer Datenbank zu erhalten, kann man folgendes Skript einsetzen. IMHO, ist die direkte Abfrage der Systemtabellen in so einem Fall zulässig.
SET NOCOUNT ON
CREATE TABLE strip_t
(
col VARCHAR(30)
)
INSERT INTO strip_t VALUES ('Frank')
INSERT INTO strip_t VALUES ('Frank!')
INSERT INTO strip_t VALUES ('Fr^ank')
INSERT INTO strip_t VALUES ('Fran&k')
INSERT INTO strip_t VALUES ('Fran$k')
SET NOCOUNT OFF
SELECT
*
FROM
strip_t
WHERE
col
LIKE '%[^A-Za-z0-9]%'
col
------------------------------
Frank!
Fr^ank
Fran&k
Fran$k
(4 row(s) affected)
Als Gegenprobe:
SELECT
*
FROM
strip_t
WHERE
col
NOT LIKE '%[^A-Za-z0-9]%'
GO
DROP TABLE strip_t
col
------------------------------
Frank
(1 row(s) affected)
Einen Nachteil gibt es doch: Dies funktioniert nicht mit allen Collations. Also, unbedingt gründlich vorher testen!!!
DECLARE @time INT
SET @time = 7382
SELECT
@time / 3600 AS Stunden
, (@time / 60)% 60 AS Minuten
, @time % 60 AS Sekunden
Stunden Minuten Sekunden
----------- ----------- -----------
2 3 2
(1 row(s) affected)