Software Review – Stellar Phoenix SQL Database Repair

Microsoft has marketed several versions of SQL Server, which is its proprietary relational database management system (RDBMS) until now. All the available versions are aimed at satisfying audiences from different backgrounds and with different workloads that can range from a small single-machine to large Internet-based applications, with a lot of concurrent users. Although built with [...]

Research SQL Server 2016CTP2 – 7/13

AlwaysOn – wysoka dostępność w SQL Server od wersji 2012, a co nowego w wersji SQL Server 2016CTP2? W zakresie AlwaysOn Failover Cluster znalazłem informację dotyczącą tego, iż SQL Server 2016CTP2 wspiera Group Managed Service Accounts, wcześniej wymagało to wyłączenia instancji po zmianie hasła w Windows Server 2012R2, w zakresie AlwaysOn Availability Groups jest trochę [...]

Research SQL Server 2016CTP2 – 6/13

Rozwój sprzętu komputerowego i coraz większe zapotrzebowanie na wydajne systemy bazodanowe spowodowały bardzo duży rozwój technologii In-Memory. Microsoft w SQL Server już w wersji 2008R2 zaimplementował nowości związane z In-Memory, był to PowerPivot, w kolejnych wersjach pojawiały się następne rewolucyjne rozwiązania tak jak SQL Server Analysis Services pracujący w trybie tabelarycznym (ang. Tabular), który ma [...]

Research SQL Server 2016CTP2 – 5/13

Bezpieczeństwo – kolejna część mojego badania nowości w SQL Server 2016CTP2 poświęcona jest właśnie badaniu nowości w zakresie bezpieczeństwa i to szeroko rozumianego. Pojawiło się w tym zakresie kilka nowości. Część z nich była już od kilku miesięcy dostępna w wersji SQLAzure v12 o czym pisałem również tutaj na blogu. Mamy do dyspozycji 3 nowe [...]

Repair SQL file header corruption

Microsoft SQL is the preferred choice when it comes to selecting a Relational Database Management System (RDBMS) for an organization. However, just like other RDBMS, it is plagued by several errors – corruption being a major one. SQL database corruption has many facets and there are quite a few places where the corruption can occur. [...]

Research SQL Server 2016CTP2 – 4/13

Czas po drążyć kolejny temat będący nowością SQL Server 2016, a dokładnie przyjrzymy się, w jakim stopniu jest to realizowane w obecnie dostępnej wersji SQL Server 2016CTP2. Mowa tutaj zgodnie z zapowiedzią o wsparciu dla JSON. Wsparcie nie oznacza, iż ma być to typ, mający tak duże możliwości jak XML, jednak w dużym stopniu może [...]

Research SQL Server 2016CTP2 – 3/13

Technologie In-Memory w tym również indeks kolumnowy, to moja ulubiona tematyka, więc oczywiście postarałem się zbadać różne aspekty zmian i działania indeksu kolumnowego. Jest to w rzeczywistości trzecia wersja tego indeksu. Indeks kolumnowy w SQL Server jest dostępny od wersji 2012. W tej wersji był bardzo ograniczony np.: mógł być tylko, jako indeks dodatkowy i [...]

Research SQL Server 2016CTP2 – 2/13

Po obejrzeniu wszystkiego po trochu, zachwyceniu się Live Query Statistics, na pierwszy ogień wziąłem Temporal Tables. Oczywiście, tym bardziej producent zaciekawił mnie do badania, czym to jest i jak działa, jak przeczytałem opis w Books online: “The system automagically ensures that when the data changes in the table with the current data the previous values are stored [...]

Research SQL Server 2016CTP2 – 1/13

Po zapowiedziach na początku maja w czasie konferencji Microsoft Ignite 2015 w USA pojawiła się długo oczekiwana ogólnie dostępna wersja CTP2 serwera bazodanowego firmy Microsoft – SQL Server 2016. Dzięki temu na wiele miesięcy przed premierą będziemy mogli sami zbadać i poznać wszystkie oferowane w niej nowości, a jest ich całkiem sporo, mimo że to [...]

Dimensional Modeling – czyli SQLDay 2015 dla twórców hurtowni danych i rozwiązań BI

Dokładnie za miesiąc będziemy w trakcie święta pasjonatów SQL Server, Business Intelligence i w ogóle szeroko rozumianej platformy danych Microsoft, czyli SQLDay 2015. W ramach tegorocznej imprezy będę miał przyjemność pierwszego dnia poprowadzić preconfa, czyli coś w rodzaju jednodniowego szkolenia z określonego tematu. Przygotowuje w tym roku temat Projektowanie Wielowymiarowego modelu danych (ang. Dimensional Modeling). [...]

Cross-database access. Part 3 – the first attempt to use code signing

In previous parts of the series we examined two insecure “solutions”. Even if we were able to get cross-database access, the first one (you can read about it here: Cross-database access. Part 1 – the worst nightmare or why applications should not use sa login) requires sysadmin privilege, the second one (described here: Cross-database access. [...]

Cross-database access. Part 2 – trustworthy databases and dbo as an authenticator

In the previous part “Cross-database access. Part 1 – the worst nightmare or why applications should not use sa login” we saw what happens if an application uses sa login. Now, we are going to discuss a better and more secure, but still not the best, solution. Can a dbo access resources from another database? [...]

Cross-database access. Part 1 – the worst nightmare or why applications should not use sa login

In this series I am going to show you three different ways of enabling cross-database access, starting with the worst, but for whatever reason, still common “solution”. The second one will be better, but still not very secure. Finally, we will see how cryptography can ultimately solve this problem.   Remember, login sa is mapped [...]

Useful things about data recovery that every DBA should know. Part 4 — Restore planning

In the last part of this series we are going to find an answer to the ultimate question — what backup files should be used and in what order, to restore a database to their most current state? We will examine two cases: 1. When a database is being restored on the original SQL Server [...]

Useful things about data recovery that every DBA should know. Part 3 — Three differential backups tricks

In this article we are going to answers those questions: 1. Is differential backup a cumulative, or an incremental one? 2. Why you really should take a full backup just before switching any file group to read-only? 3. Do you really need a full backup to restart a broken log backup chain? If you missed [...]

Useful things about data recovery that every DBA should know. Part 2 — What does a full backup contain?

In the first part of the series, “Useful things about data recovery that every DBA should know. Part 1 — To what point in time full backup is being restored?”, we saw, that a full backup can be only restored to the point in time when a data copy phase finished. Now it is time [...]

Useful things about data recovery that every DBA should know. Part 1 — To what point in time full backup is being restored?

Every DBA took at least once full database backup. But do you happen to know to what point in time this backup would be restored? To the moment when backup started? To the time when it finished? Or maybe there is a third option? If you had chosen one of the first two answers, you [...]

The Hidden Effect of Rolling Back Transaction from Triggers

Yes, you can rollback a transaction from a trigger. But just because you can doesn”t mean you should. In the contrary – if you do not catch exceptions on the SQL Server side, using a ROLLBACK statement inside triggers put you in serious risk. Understanding T-SQL Error Handling If you asked me what part of [...]

Nested Transactions in SQL Server

If you think there is such a thing as nested transaction in SQL Server, this post is for you. Nesting Transaction vs. Nested Transactions Technically you can begin a new transaction inside another one. What’s more, there is @@TRANCOUNT function that returns current transaction nesting level. Note. This function is quite handy as there is [...]

I don’t have a SAN, so how many tempdb files do I need? Part 2 — PFS, GAM, and SGAM contention

In the previous article I don’t have a SAN, so how many tempdb files do I need? Part 1 — When splitting tempdb into to many files can be counterproductive to performance we saw that splitting tempdb into multiple files can be problematic. Now, it is time to have a closer look at the most [...]

I don’t have a SAN, so how many tempdb files do I need? Part 1 — When splitting tempdb into to many files can be counterproductive to performance

You can find some great and overwhelming load of not so good information about optimizing tempdb performance all over the Internet. This post has one purpose — to warn you of the consequences that you will face blindly following one of those “best practices”. Namely, if somebody tells you without even checking what your storage [...]

The Meaning of Stored Procedures. Part 8 — The case of “sp_” prefix and a geek riddle

Let me start the last part of the series with a simple question — What does the “sp_” prefix stand for? If your immediate answer is “system stored procedures, of course” you are only partially right. The better answer would be “sp stands for special prefix”. It might sound funny, but they are good reasons [...]

The Meaning of Stored Procedures Part 7 — No direct owners, name resolutions and the difference between EXECUTE AS SELF and EXECUTE AS OWNER

There is surprisingly much misunderstanding about schema-user separation, and about how name resolution as well as impersonation work in SQL Server. The ability to impersonate users by code modules was added in SQL Server 2005, along with database schemas (SQL Server 2000 only allowed context switching by executing SETUSER statement), but those features are still [...]

The Meaning of Stored Procedures Part 6 — NOCOUNT, ROWCOUNT and @@ROWCOUNT

If you remember, in the second part of this series (“Avoiding recompilations due to plan stability-related reasons”) I was talking about a drawback of setting plan reuse affecting SET option inside stored procedures. Nevertheless, this time I will show you two SET options that really should be set to on. We will start easily — [...]

The Meaning of Stored Procedures. Part 5 — When plan reusing is a bad thing or how to implement conditional logic inside stored procedures.

It has been more than a month since the first article on this series was published, so let me revise what we have already discussed: 1. Part 1 — “Plan caching and reuse is a good thing” was all about execution plans caching and reusing. We proved, that recompilation not only takes a lot of [...]

The Meaning of Stored Procedures. Part 4 — When plan reusing is a bad thing or how to deal with “Parameter Sniffing problem”

Finally, after three articles in which I did my best to convince you that plan caching and reusing has massive positive impact on performance (that was the topic of the first article The Meaning of Stored Procedures.Part 1 — Plan Caching and Reuse is a Good Thing) and showed, what can be done to avoid [...]

The Meaning of Stored Procedures. Part 3 – Avoiding recompilations due to plan optimality-related reasons.

As you recall, in previous parts of this series we agreed that reusing execute plans might have tremendous impact on SQL Server performance, and saw how to avoid unnecessary recompilation by proper use of temporary tables and not changing cache-key SET options. If you missed those articles, they can be found here: The Meaning of [...]

The Meaning of Stored Procedures. Part 2 — Avoiding recompilations due to plan stability-related reasons.

In the previous article I tried to convince you that stored procedures are a proper way to avoid unnecessary compilations and recompilations. They may not be the fastest (in most cases prepared queries will be faster), but they are widely used, mainly because they are great from security and manageability perspectives. Unfortunately, stored procedures are [...]

The Meaning of Stored Procedures. Part 1 — Plan Caching and Reuse is a Good Thing.

Everybody knows that use of stored procedures offers a number of benefits over issuing T-SQL code directly from an application. One of the most common reasons for using stored procedures is as a security boundary — a user can be given access to execute a stored procedure without having permissions directly on the underlying objects. [...]