Kategoria Designing, Optimizing and Maintaining

Zwiększony minimalny rozmiar modelu w MS SQL Server 2012

Jeżeli posiadamy skrypty poprawnie działające w wersji MS SQL Server 2008 R2, w których należy określić początkowy minimalny rozmiar bazy danych,
należy podczas migracji do wersji MS SQL Server 2012 uwzględnić zmiany jakie zaszły w modelu bazy danych.

Z powodu dodania nowych tabel, widoków, procedur i innych obiektów zwiększył się minimalny rozmiar bazy z 2 MB na 5 MB. Uzycie dotychczasowych skryptów określających minimum na 2 MB spowoduje wywołanie błędu nr 1803:

CREATE DATABASE [test_db] ON PRIMARY
( NAME = N'test_db',
  FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL11\MSSQL\DATA\test_db.mdf' ,
  SIZE = 2048KB , -- powinno być 5120KB
  FILEGROWTH = 1024KB )
LOG ON
( NAME = N'test_db_log',
  FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL11\MSSQL\DATA\test_db_log.ldf' ,
  SIZE = 1024KB ,
  FILEGROWTH = 10%)
GO

W odpowiedzi dostaniemy błąd:

Msg 1803, Level 16, State 1, Line 3 The CREATE DATABASE statement failed.
The primary file must be at least 5 MB to accommodate a copy of the model database.

Poniżej przedstawiam historię zmnian rozmiaru model.mdf i modellog.ldf.

SQL Server version

Physical file size...

Czytaj dalej

Konfiguracja zapory dla FILESTREAM w MS SQL Server 2012

W celu uzyskania dostępu do FILESTREAM w MS SQL Server 2012 w systemie MS Windows 7 z włączoną „Zaporą Windows” należy prawidłowo skonfigurować połączenia przychodzące.

W tym celu w „Panelu Sterowania” należy uruchomić zaawansowane ustawienia „Zapory Windows„, a następnie dodać

w nich dwie nowe reguły dla połączeń przychodzących:

1. Nowa reguła dla połączeń przychodzących otwierająca port TCP 139

2. Nowa reguła dla połączeń przychodzących otwierająca port TCP 445

Czytaj dalej

Uwaga do artykułu „Osieroceni użytkownicy” w MS SQL Server 2000-2008 R2

W październiku 2010 roku na portalu WSS umieściłem artykuł:

„Osieroceni użytkownicy w MS SQL Server 2000/2005/2008/2008 R2″

 

Omawia on problem niezgodności SID-ów zapisanych w tabelach sysxlogins i sysusers.

 

Chciałem dodać jedno spostrzeżenie podesłane przez czytelnika ww. artykułu.

W linku do Books Online (od wersji 2008 w górę) jest napisane, że ta procedura zostanie w przyszłości usunięta i żeby zamiast niej stosować ALTER USER.
Po sprawdzeniu mogę dodać, że jak na razie ta procedura jest dostępna we wstępnej dokumentacji do SQL Server „Denali”.

Zapraszam to przeczytania artykułu.

Czytaj dalej

„Osieroceni użytkownicy” w MS SQL Server 2000/2005/2008/2008 R2

Na portalu WSS umieściłem artykuł: „Osieroceni użytkownicy w MS SQL Server 2000/2005/2008/2008 R2”

Omawia on problem niezgodności SID-ów zapisanych w tabelach sysxlogins i sysusers.

Problem ten popularnie nazywany jako „Osieroceni użytkownicy” (Orphaned Users).

Zapraszam to przeczytania artykułu.

Czytaj dalej

Zamiana sid-a usera sidem z loginu w SQL Server 2000.

Bardzo często zdarza się, że przenosimy bazę danych na inną instancję serwera czy też na inny fizyczny serwer.

Mamy już założone loginy lub te loginy zakładamy. Po przeniesieniu bazy i po jej odtworzeniu posiadamy te same nazwy userów ale z innymi wartościami sid tzn. inny jest sid zapisany w tabeli sysusers należącej do przenoszonej bazy danych oraz inny jest sid zapisany w tabeli sysxlogins bazy systemowej master.

Należy podmienić sidy w tabeli wybranej bazy danych sysusers sidami z tabeli sysxlogins bazy master w ramach tej samej nazwy loginu i usera.

Poniżej przedstawiony kod działa wyłącznie na wersji MS SQL Server 2000.

Use master
GO

sp_configure @configname = 'allow updates'
, @configvalue = '1';
RECONFIGURE WITH OVERRIDE
GO

UPDATE su
SET su.sid = sl.sid
FROM [nazwabazydanych]..sysusers AS su
JOIN master..sysxlogins AS sl ON su.[name] like sl.[name]
WHERE su.[name] = 'nazwausera'
GO

sp_configure @configname = 'allow updates'
, @configvalue = '0'

RECONFIGURE WITH OVERRIDE
GO
Czytaj dalej

Porównanie nazwy tabel i ilości rekordów bazy na dwóch instancjach MS SQL Servera.

Przedstawiam rozwinięcie skryptu „Informacje o tabelach, ilościach wierszy i wielkościach danych zawartych w bazie danych.” przydatnego przy porównywaniu nazw tabel i ilości rekordów w bazach danych umieszczonych na różnych serwerach. Niżej przedstawiony skrypt uruchamiamy na serwerze źródłowym, wynikiem którego jest wygenerowany automatycznie skrypt służący do uruchomienia na serwerze docelowym.

Wynikiem tego skryptu będzie tabela przedstawiająca różnice w występowaniu tabel czy też różnej ilości rekordów w bazie danych.

Testowany na SQL Server 2000, 2008.

/* Author Dariusz 'DBSoft' Brejnak (c) 2010
name        rows Database
publishers1    8 Source -- inna nazwa tabeli lub brak w destination
titles        28 Source   -- inna ilość rekordów
publishers     8 Destination -- inna nazwa tabeli lub brak w source
sales         21 Destination -- brak tabeli w source
titles        18 Destination -- inna ilość rekordów
*/

SET NOCOUNT ON
CREATE TABLE #tmp
([name] varchar(50),
[rows] int,
[reserved] varchar (20),
[data] varchar (20),
[index_size] varchar(20),
[unsed] varchar(20)
)
CREATE TABLE #tmprows_source
([servername] varchar(50),
[basenam...
Czytaj dalej
DBBS