История одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 05.02.06 16:51
Оценка: 44 (8) +1
#Имя: FAQ.janus.sqlexpress
Закончилось
Автор: akasoft
Дата: 04.02.06
у меня недавно счастье. И вроде рядом оно, а совсем вышло всё.

А рубить "нажитое непосильным трудом" жалко. Хотел было удалить "старые" темы да ненужные форумы, но передумал.

Долго ли, коротко ли, а без Януса совсем "жизни" нет , и решился я помучать SQL Express. А поскольку ленивый я очень, то утилиту импорта-экспорта писать мне было влом, и решил я воспользоваться встроенными да имеющимися возможностями.

Само собой, что поставил я тулзы от сервера 2005, и пробовал всё из Microsoft SQL Server Management Studio.

Попробовал экспорт данных из Access в SQL Server, создал источник более часа ждал, образовалась папка с 2Г БД и 4Г лога. Удалил нафиг.

Попробовал импорт данных, как ИТ излагал
Автор: akasoft
Дата: 30.10.05
. Получилось, только что из-за перестроения индексов БД распухла на 42%, что-то до 4Г. Без перестроения индексов жутько тормозила, хуже mdb, что и не удивительно. Но и после построения индексов, и после сжатия всё одно работа была несколько некомфортной. Я, знаете, от SQL Express ожидал большего.

Тогда мне стало совсем грустно, и пришлось напрячь остатки мозгов.

И подумал я, что Янус-то должен уметь создавать структуру-пустышку, Ретн не зря старался же. Сказано сделано. Запустил Янус, само собой открыл мне он mdb, я полез в меню Сервис-Настройки пользователя, и изменил там строку подключения: нажал троеточие, перешёл на вкладку MS SQL Server, указал там COMPUTERNAME\SQLEXPRESS, Windows-аутентификацию, нажал Connect, установил соединение, а затем нажал Create. БД появилась, строка подключения сформировалась, и при последующем перезапуске Януса я наконец увидел... ничего не увидел.

Ну, начнём с того, что БД создалась в папке по умолчанию, что меня категорически не устраивало, у меня были свои виды на положение БД. А во-вторых, надо бы перенести данные таки.

Во время экспериментов заметил я любовь Экспресса к оперативной памяти, и решил это пресечь. Выбрал правым щелчком по корневой ветке в SQL SMS сервер, меню Properties, страница Memory и выставил там мксимум и минимум в МБ. После чего перезапустил службу, ну и SMS переподключил. Аппетиты поубавились, хотя этот товарищ всё порывался перейти установленный мною максимум, хотя и ненамного, мегабайт на 20-30.

Сразу скажу, удалял и создавал я БД Януса раз 20 на разные лады, импортировал, экспортировал, всё понять хотел, как оно работает. И понял, что лучше будет создать пустую БД, а затем из SQL SMS выбрать БД Janus, правый щёлк, меню Tasks-Generate Scripts и в формочке мастера ставить True напротив Script Indexes, а затем у меня получился готовый скрипт создания пустой БД. Только путь в нём подправить на нужный. Вот такой он у меня получился:

USE [master]
GO
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'Janus')
BEGIN
CREATE DATABASE [Janus] ON  PRIMARY
( NAME = N'Janus', FILENAME = N'C:\rsdnforums\sql\Janus.mdf' , SIZE = 2240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON
( NAME = N'Janus_log', FILENAME = N'C:\rsdnforums\sql\Janus_log.LDF' , SIZE = 1088KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
END

GO
EXEC dbo.sp_dbcmptlevel @dbname=N'Janus', @new_cmptlevel=90
GO
ALTER DATABASE [Janus] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [Janus] SET ANSI_NULLS OFF
GO
ALTER DATABASE [Janus] SET ANSI_PADDING OFF
GO
ALTER DATABASE [Janus] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [Janus] SET ARITHABORT OFF
GO
ALTER DATABASE [Janus] SET AUTO_CLOSE ON
GO
ALTER DATABASE [Janus] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [Janus] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [Janus] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [Janus] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [Janus] SET CURSOR_DEFAULT  GLOBAL
GO
ALTER DATABASE [Janus] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [Janus] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [Janus] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [Janus] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [Janus] SET  ENABLE_BROKER
GO
ALTER DATABASE [Janus] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [Janus] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [Janus] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [Janus] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [Janus] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [Janus] SET  READ_WRITE
GO
ALTER DATABASE [Janus] SET RECOVERY SIMPLE
GO
ALTER DATABASE [Janus] SET  MULTI_USER
GO
ALTER DATABASE [Janus] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [Janus] SET DB_CHAINING OFF
USE [Janus]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[messages_outbox]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[messages_outbox](
        [dte] [datetime] NOT NULL,
        [gid] [int] NULL,
        [hold] [bit] NOT NULL DEFAULT ((0)),
        [message] [ntext] NULL,
        [mid] [int] IDENTITY(1,1) NOT NULL,
        [reply] [int] NOT NULL,
        [subject] [nvarchar](128) NULL,
        [tagline] [nvarchar](128) NULL,
 CONSTRAINT [PK_messages_outbox] PRIMARY KEY CLUSTERED
(
        [mid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[rate_outbox]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[rate_outbox](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [mid] [int] NOT NULL,
        [rate] [int] NOT NULL,
 CONSTRAINT [PK_rate_outbox] PRIMARY KEY CLUSTERED
(
        [id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[rating]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[rating](
        [dte] [datetime] NOT NULL,
        [id] [int] IDENTITY(1,1) NOT NULL,
        [mid] [int] NOT NULL,
        [rate] [smallint] NOT NULL,
        [rby] [smallint] NOT NULL,
        [tid] [int] NOT NULL,
        [uid] [int] NOT NULL,
 CONSTRAINT [PK_rating] PRIMARY KEY CLUSTERED
(
        [id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[rating]') AND name = N'IX_rating_mid')
CREATE NONCLUSTERED INDEX [IX_rating_mid] ON [dbo].[rating]
(
        [mid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[rating]') AND name = N'IX_rating_mid_rate')
CREATE NONCLUSTERED INDEX [IX_rating_mid_rate] ON [dbo].[rating]
(
        [mid] ASC,
        [rate] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[rating]') AND name = N'IX_rating_tid')
CREATE NONCLUSTERED INDEX [IX_rating_tid] ON [dbo].[rating]
(
        [tid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[rating]') AND name = N'IX_rating_uid')
CREATE NONCLUSTERED INDEX [IX_rating_uid] ON [dbo].[rating]
(
        [uid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[server_forums]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[server_forums](
        [descript] [nvarchar](128) NULL,
        [id] [int] NOT NULL,
        [name] [nvarchar](64) NULL,
        [rated] [bit] NOT NULL DEFAULT ((0)),
        [intop] [bit] NOT NULL DEFAULT ((0)),
        [ratelimit] [smallint] NOT NULL,
 CONSTRAINT [PK_server_forums] PRIMARY KEY CLUSTERED
(
        [id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[server_forums]') AND name = N'IX_server_forums_name')
CREATE NONCLUSTERED INDEX [IX_server_forums_name] ON [dbo].[server_forums]
(
        [name] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[subscribed_forums]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[subscribed_forums](
        [descript] [nvarchar](128) NULL,
        [id] [int] NOT NULL,
        [lastsync] [int] NOT NULL,
        [name] [nvarchar](64) NULL,
        [urcount] [int] NULL,
        [issync] [bit] NOT NULL DEFAULT ((0)),
        [priority] [int] NULL,
 CONSTRAINT [PK_subscribed_forums] PRIMARY KEY CLUSTERED
(
        [id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[subscribed_forums]') AND name = N'IX_subscribed_forums_name')
CREATE NONCLUSTERED INDEX [IX_subscribed_forums_name] ON [dbo].[subscribed_forums]
(
        [name] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[users]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[users](
        [homepage] [nvarchar](120) NULL,
        [origin] [nvarchar](255) NULL,
        [publicemail] [nvarchar](60) NULL,
        [realname] [nvarchar](80) NULL,
        [spec] [nvarchar](100) NULL,
        [uid] [int] NOT NULL,
        [userclass] [int] NULL,
        [username] [nvarchar](60) NULL,
        [usernick] [nvarchar](100) NULL,
        [wherefrom] [nvarchar](100) NULL,
 CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED
(
        [uid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[vars]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[vars](
        [name] [nvarchar](24) NOT NULL,
        [varvalue] [nvarchar](128) NULL,
 CONSTRAINT [PK_vars] PRIMARY KEY CLUSTERED
(
        [name] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[download_topics]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[download_topics](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [source] [nvarchar](32) NULL,
        [messageid] [int] NOT NULL,
        [hint] [nvarchar](128) NULL,
 CONSTRAINT [PK_download_topics] PRIMARY KEY CLUSTERED
(
        [id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[favorites]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[favorites](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [mid] [int] NOT NULL,
        [fid] [int] NOT NULL,
        [comment] [nvarchar](255) NULL,
        [url] [ntext] NULL,
 CONSTRAINT [PK_favorites] PRIMARY KEY CLUSTERED
(
        [id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[favorites_folders]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[favorites_folders](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [name] [nvarchar](100) NULL,
        [pid] [int] NOT NULL,
        [comment] [nvarchar](255) NULL,
 CONSTRAINT [PK_favorites_folders] PRIMARY KEY CLUSTERED
(
        [id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[marks_outbox]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[marks_outbox](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [mark] [int] NOT NULL,
        [mid] [int] NOT NULL,
 CONSTRAINT [PK_marks_outbox] PRIMARY KEY CLUSTERED
(
        [id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[messages]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[messages](
        [dte] [datetime] NOT NULL,
        [gid] [int] NOT NULL,
        [ismarked] [bit] NOT NULL DEFAULT ((0)),
        [isread] [tinyint] NOT NULL DEFAULT ((0)),
        [message] [ntext] NULL,
        [mid] [int] NOT NULL,
        [pid] [int] NOT NULL,
        [subject] [nvarchar](128) NULL,
        [tid] [int] NOT NULL,
        [uclass] [int] NULL,
        [uid] [int] NOT NULL,
        [usernick] [nvarchar](50) NULL,
        [article_id] [int] NULL,
        [readreplies] [bit] NOT NULL DEFAULT ((0)),
        [name] [nvarchar](160) NULL,
 CONSTRAINT [PK_messages] PRIMARY KEY CLUSTERED
(
        [mid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[messages]') AND name = N'IX_messages_dte')
CREATE NONCLUSTERED INDEX [IX_messages_dte] ON [dbo].[messages]
(
        [dte] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[messages]') AND name = N'IX_messages_gid')
CREATE NONCLUSTERED INDEX [IX_messages_gid] ON [dbo].[messages]
(
        [gid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[messages]') AND name = N'IX_messages_pid')
CREATE NONCLUSTERED INDEX [IX_messages_pid] ON [dbo].[messages]
(
        [pid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[messages]') AND name = N'IX_messages_tid')
CREATE NONCLUSTERED INDEX [IX_messages_tid] ON [dbo].[messages]
(
        [tid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[messages]') AND name = N'IX_messages_uid')
CREATE NONCLUSTERED INDEX [IX_messages_uid] ON [dbo].[messages]
(
        [uid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[topic_info]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[topic_info](
        [mid] [int] NOT NULL,
        [answers_count] [smallint] NULL,
        [answers_unread] [smallint] NULL,
        [answers_rate] [smallint] NULL,
        [answers_smile] [smallint] NULL,
        [answers_agree] [smallint] NULL,
        [answers_disagree] [smallint] NULL,
        [answers_me_unread] [smallint] NULL,
        [answers_marked] [smallint] NULL,
        [answers_last_update_date] [datetime] NULL,
        [this_rate] [smallint] NULL,
        [this_smile] [smallint] NULL,
        [this_agree] [smallint] NULL,
        [this_disagree] [smallint] NULL,
        [gid] [int] NULL,
 CONSTRAINT [PK_topic_info] PRIMARY KEY CLUSTERED
(
        [mid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[topic_info]') AND name = N'IX_topic_info_answers_last_update_date')
CREATE NONCLUSTERED INDEX [IX_topic_info_answers_last_update_date] ON [dbo].[topic_info]
(
        [answers_last_update_date] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[topic_info]') AND name = N'IX_topic_info_gid')
CREATE NONCLUSTERED INDEX [IX_topic_info_gid] ON [dbo].[topic_info]
(
        [gid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO
USE [Janus]
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_topic_info_mid]') AND parent_object_id = OBJECT_ID(N'[dbo].[topic_info]'))
ALTER TABLE [dbo].[topic_info]  WITH CHECK ADD  CONSTRAINT [FK_topic_info_mid] FOREIGN KEY([mid])
REFERENCES [dbo].[messages] ([mid])
ON UPDATE CASCADE
ON DELETE CASCADE


Затем в очередной раз удалил БД Janus, и скриптом создал новую, но в нужном месте, SMS позволяет выполнять скрипты. Так у меня появилась БД с нужной схемой в нужном месте, но всё ещё без данных.

Данные я перенёс стандартным импортом. Правый щёлк на Databases — Janus, меню Task — Import data... Переносил в три захода, вначале перенёс все мелкие таблицы, где были данные, затем messages, а потом topic_info. М.б. можно и всё за один раз, но я уже утомился к тому времени соблюдать целостность БД.

Самое главное там — это нажать кнопочку Edit м поставить галку Enable identity insert напротив каждой таблицы. Мастер переносил данные быстрее Access, но тоже более получаса.

Затем я сжал БД, правый щёлк на БД Janus, меню Tasks — Shrink — Database. Хотя оно было почити не нужно, и БД, и лог были почти оптимальными, без лишка. В скрипте выше есть

ALTER DATABASE [Janus] SET AUTO_SHRINK OFF


но думаю, что делать ему ON неправильно, уж лучше по старинке, пальцами указать когда сжимать. Чтобы сразу потом и Back up из того же меню сделать.

Так я возобновил своё счастье, потеряв часов 5 на всякие эксперименты. По субъективным ощущениям бегает быстро, поиск правда тормозит так же. Надо будет попробовать full text search включить, что ли.

Надеюсь, эта моя сказка поможет кому сохранить время. Мне ещё предстоит всё это колдовство на рабочем месте...
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re[4]: История одного перехода на SQLEXPRESS
От: retn нет
Дата: 07.02.06 22:28
Оценка: 20 (2)
Здравствуйте, Smarty, Вы писали:

Microsoft SQL Server Management Studio Express
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re[4]: История одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 08.02.06 06:25
Оценка: 14 (1)
Здравствуйте, Smarty, Вы писали:

S>Ясно. Но как я понимаю SMS составная часть "большого" SQL Server 2005, а не станд-алоне приложение. Т.е. если на машине уже установлен Express, то накатить сверху ТОЛЬКО SMS не получится?


Я накатывал всё с рассылаемого диска беты 2, всё замечательно накатывалось. В комплекте был диск SQL сервера, и при установке можно было выбрать только набор утилит. Сам подумай, серверная часть обычно ставится на сервер для работы круглосуточно и без локальной консоли. А управляют этим богатством обычно удалённо. Вот там-то утилиты и нужны.

S> Или есть диск с SQL Server 2005 то там можно выбрать установку только этого продукта?


Именно так.
... << RSDN@Home 1.2.0 alpha rev. 636>> SQLE 2005
Re[4]: История одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 11.03.06 18:31
Оценка: 3 (1)
Здравствуйте, FireShock, Вы писали:

FS>Не пробовал ни кто делать не импорт в Сервер, а экспорт из Акцесса в SQL 2005?


Невнимательно читаешь. Я делал, ждал долго, результат очень плох. Нафиг такой перенос.

FS>Нужно ставить SMS из комплекта MS SQL Server 2005?


Именно так.

Перечитай ещё раз моё "изложение", без танца с бубном, т.е. нескольких этапов переноса данных, никак не обойтись. Это ключевой момент.
... << RSDN@Home 1.2.0 alpha rev. 648>> SQL Express 2005
Re: История одного перехода на SQLEXPRESS
От: IT Россия linq2db.com
Дата: 05.02.06 23:50
Оценка:
Здравствуйте, akasoft, Вы писали:

Что бы перенести базу с одного места в другое, можено сделать ей Detach, скопировать, а потом Attach.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: История одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 06.02.06 15:47
Оценка:
Здравствуйте, IT, Вы писали:

IT>Что бы перенести базу с одного места в другое, можено сделать ей Detach, скопировать, а потом Attach.


Да уже потом научился менюшкой пользоваться.
... << RSDN@Home 1.2.0 alpha rev. 642>> SQL Express 2005
Re[2]: История одного перехода на SQLEXPRESS
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.02.06 16:55
Оценка:
Здравствуйте, IT, Вы писали:

IT>Что бы перенести базу с одного места в другое, можено сделать ей Detach, скопировать, а потом Attach.


Можно еще бекап сделать. Дольше, но рамер бекапа получается меньше.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[3]: История одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 06.02.06 18:22
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Можно еще бекап сделать. Дольше, но рамер бекапа получается меньше.


Ни, у меня не вышло, говорит БД не та, если в новосозданную БД восстанавливать бекап с другой БД. Хотя, м.б. дело в том, что янусовский реструктуризатор добавляет нужные индексы и ключи, а SMS-ный импорт этого не делает.
... << RSDN@Home 1.2.0 alpha rev. 642>> SQL Express 2005
Re[4]: История одного перехода на SQLEXPRESS
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 07.02.06 09:15
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Ни, у меня не вышло, говорит БД не та, если в новосозданную БД восстанавливать бекап с другой БД.


Там дурной интерфейс. Нужно ручками протоптать имена файлов и поставить галочку напротив overwrite existing database.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re: История одного перехода на SQLEXPRESS
От: Smarty Россия  
Дата: 07.02.06 19:19
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Само собой, что поставил я тулзы от сервера 2005, и пробовал всё из Microsoft SQL Server Management Studio.

Пардон, а что Server Management Studio подхватывает экспресс-вариант сервера? Ну или он его, не важно... Короче — они дружат, SMS & SQLExpress?
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Re[2]: История одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 07.02.06 19:28
Оценка:
Здравствуйте, Smarty, Вы писали:

S>Пардон, а что Server Management Studio подхватывает экспресс-вариант сервера? Ну или он его, не важно... Короче — они дружат, SMS & SQLExpress?


Вроде да. Протоколы-то одни и те же, разница в объёмах данных.
... << RSDN@Home 1.2.0 alpha rev. 642>> SQL Express 2005
Re[3]: История одного перехода на SQLEXPRESS
От: Smarty Россия  
Дата: 07.02.06 20:53
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Здравствуйте, Smarty, Вы писали:


S>>Пардон, а что Server Management Studio подхватывает экспресс-вариант сервера? Ну или он его, не важно... Короче — они дружат, SMS & SQLExpress?


A>Вроде да. Протоколы-то одни и те же, разница в объёмах данных.


Ясно. Но как я понимаю SMS составная часть "большого" SQL Server 2005, а не станд-алоне приложение. Т.е. если на машине уже установлен Express, то накатить сверху ТОЛЬКО SMS не получится? Или есть диск с SQL Server 2005 то там можно выбрать установку только этого продукта? Просто как я понимаю Express+SMS это как раз та связка, что полностью удоволетворит мои девелоперские запросы в разрезе клиент-серверных аппликейшенов... Вот и хотелось бы ее поиметь.
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Re: История одного перехода на SQLEXPRESS
От: FireShock Россия  
Дата: 10.03.06 22:14
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Данные я перенёс стандартным импортом. Правый щёлк на Databases — Janus, меню Task — Import data...


В SMS у меня нет задачи Import Как и Экспорт. Что делать?
... << RSDN@Home 1.2.0 alpha rev. 648>>
Instagram
Re[2]: История одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 11.03.06 08:14
Оценка:
Здравствуйте, FireShock, Вы писали:

FS>В SMS у меня нет задачи Import Как и Экспорт. Что делать?


У меня есть. Базу-то создал пустую, выбирал её?
... << RSDN@Home 1.2.0 alpha rev. 648>> SQL Express 2005
Re[3]: История одного перехода на SQLEXPRESS
От: FireShock Россия  
Дата: 11.03.06 17:17
Оценка:
Здравствуйте, akasoft, Вы писали:

A>У меня есть. Базу-то создал пустую, выбирал её?

Я, кажется, понял. У меня SMS Express. Т.е. обрезанная.

Но у меня вопрос срочный — Акцессовская БД уже предельного размера. Не пробовал ни кто делать не импорт в Сервер, а экспорт из Акцесса в SQL 2005? Я прождал 3 часа переноса, но только таблица Messages не перенеслась и ошибок не было. Остальные таблицы — без вопросов. Делал и в новую БД, и в уже созданную пустую (ту, которой скрипт по созданию ты сюда выложил).

Нужно ставить SMS из комплекта MS SQL Server 2005?

Благодарю.
Instagram
Re[5]: История одного перехода на SQLEXPRESS
От: FireShock Россия  
Дата: 12.03.06 09:52
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Перечитай ещё раз моё "изложение", без танца с бубном, т.е. нескольких этапов переноса данных, никак не обойтись. Это ключевой момент.


Есть! Перешел. База стала весить метров на 30 все лишь больше (2.03 Гб) из ~1200000 сообщений. Благодарю.
... << RSDN@Home 1.2.0 alpha rev. 648>>
Instagram
Re[5]: История одного перехода на SQLEXPRESS
От: FireShock Россия  
Дата: 12.03.06 09:56
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Перечитай ещё раз моё "изложение", без танца с бубном, т.е. нескольких этапов переноса данных, никак не обойтись. Это ключевой момент.

А переиндексацию потом делал? Без нее пока летает (в сравнении с Джетом)
... << RSDN@Home 1.2.0 alpha rev. 648>>
Instagram
Re[6]: История одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 12.03.06 10:33
Оценка:
Здравствуйте, FireShock, Вы писали:

FS>А переиндексацию потом делал? Без нее пока летает (в сравнении с Джетом)


Какую ещё переиндексацию? Если делал, как я описывал, индексы правильные строятся в самом начале, при создании пустышки. Я там даже скрипт приводил.
... << RSDN@Home 1.2.0 alpha rev. 648>> SQL Express 2005
Re: История одного перехода на SQLEXPRESS
От: DEMON HOOD  
Дата: 08.05.06 06:13
Оценка:
Здравствуйте, akasoft, Вы писали:

Экспрес я нашёл... а что такое SMS?
silent RSDN@Home 1.2.0 alpha [647] Windows XP 5.1.2600.131072
Re[2]: История одного перехода на SQLEXPRESS
От: DEMON HOOD  
Дата: 08.05.06 07:27
Оценка:
Здравствуйте, DEMON HOOD, Вы писали:

DH>Экспрес я нашёл... а что такое SMS?


прикольно.... поднял тему и туда ещё топиков
Автор: retn
Дата: 08.02.06
набросало
silent RSDN@Home 1.2.0 alpha [647] Windows XP 5.1.2600.131072
Re[2]: История одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 09.05.06 09:15
Оценка:
Здравствуйте, DEMON HOOD, Вы писали:

DH>Экспрес я нашёл... а что такое SMS?


Microsoft SQL Server Management Studio.
... << RSDN@Home 1.2.0 alpha rev. 649>> SQL Express 2005
Re: История ЕЩЕ одного перехода на SQLEXPRESS
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 03.10.06 20:40
Оценка:
Здравствуйте, akasoft, Вы писали:

решил повторить все шаги, но уже на последнем Янусе — 1.2.0.655

повторил все как ниже по шагам — с установкой SQL Express gjnjv SP1 + SQL SMS (+SP1) из уже настоящего SQL Server 2005 Dev Edition

A>Сразу скажу, удалял и создавал я БД Януса раз 20 на разные лады, импортировал, экспортировал, всё понять хотел, как оно работает. И понял, что лучше будет создать пустую БД, а затем из SQL SMS выбрать БД Janus, правый щёлк, меню Tasks-Generate Scripts и в формочке мастера ставить True напротив Script Indexes, а затем у меня получился готовый скрипт создания пустой БД. Только путь в нём подправить на нужный. Вот такой он у меня получился:


[...]


получил скрипт, вставил шапочку из приведенного в ориг. сообщ. которая как я понял кастомизирует путь до базы и т.п. Все пока ОК.

A>Затем в очередной раз удалил БД Janus, и скриптом создал новую, но в нужном месте, SMS позволяет выполнять скрипты. Так у меня появилась БД с нужной схемой в нужном месте, но всё ещё без данных.


вставил путь до диры с Janus которая внутри C:\Program Files\RSDN\RSDN@Home\ — и получил несоздание БД ни скриптом ни из самой SQL SMS

выяснилось довольно быстро что нужно trustee NETWORK SERVICE дать полные права на директорию, где будет создаваться БД.

удалил БД совсем. после указанных манипуляций с security запустил скрипт снова и получил то что задумывалось.

A>Данные я перенёс стандартным импортом. Правый щёлк на Databases — Janus, меню Task — Import data... Переносил в три захода, вначале перенёс все мелкие таблицы, где были данные, затем messages, а потом topic_info. М.б. можно и всё за один раз, но я уже утомился к тому времени соблюдать целостность БД.


подтверждаю, сразу не пошло, если выделить все то ломается вот с таким симптомом:

Error 0xc0202009: Data Flow Task: An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80004005 Description: "The statement has been terminated.".
An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80004005 Description: "Violation of PRIMARY KEY constraint 'PK_server_forums'. Cannot insert duplicate key in object 'dbo.server_forums'.".
(SQL Server Import and Export Wizard)


и так практически с каждой табличкой. в чем тут дело? Как вылечить?

выставил доп.права для пользователя чтобы совсем как у SQL Server DATA диры — не помогло

в отчете ошибки начинаются с такой

[...]

— Copying to [Janus].[dbo].[rating] (Error)
Messages
* Error 0xc0202009: Data Flow Task: An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80004005 Description: "The statement has been terminated.".
An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80004005 Description: "The INSERT statement conflicted with the FOREIGN KEY constraint "FK_topic_info_mid". The conflict occurred in database "Janus", table "dbo.messages", column 'mid'.".
(SQL Server Import and Export Wizard)

[...]


пробовал отключать таблички по мере глюков с ними — начиная с server_forums, но та же ошибка повторялась и со всеми остальными

успешно переехали только те что были без данных

- Copying to [Janus].[dbo].[download_topics] (Success)
* 0 rows transferred
— Copying to [Janus].[dbo].[favorites] (Success)
* 0 rows transferred
— Copying to [Janus].[dbo].[favorites_folders] (Success)
* 0 rows transferred
— Copying to [Janus].[dbo].[marks_outbox] (Success)
* 0 rows transferred
— Copying to [Janus].[dbo].[rate_outbox] (Success)
* 0 rows transferred


попробовал отдельно messages переволочь — получил

Error 0xc002f210: Preparation SQL Task: Executing the query "TRUNCATE TABLE [Janus].[dbo].[messages]
" failed with the following error: "Cannot truncate table 'Janus.dbo.messages' because it is being referenced by a FOREIGN KEY constraint.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.


грустно. убрал галочку Delete rows in destination table которую выставил отчего то решив что она нужна дабы грохнуть на всякий случай все что вдруг осталось от предыдущих экспериментов с импортом. Пустил снова — о, чудо! — пошло импортировать messages

поставил следом messages_output и получил

Error 0xc0202009: Data Flow Task: An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80004005 Description: "The statement has been terminated.".
An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80004005 Description: "Violation of PRIMARY KEY constraint 'PK_messages_outbox'. Cannot insert duplicate key in object 'dbo.messages_outbox'.".


методом тыка, удалось следом перегнать topic_info и все. на все оставшиеся таблички ошибка приведенная выше

попробовал наудачу пускануть скрипт IT приведенный по ссылке выше — частично что-то в нем сработало что-то нет, потом импорт все равно не пошел и я иссяк

подозреваю что-то не очень сложное, много по этому коду ошибки в MSDN находится... вроде 'PRB: System Tables Missing Primary Key Information After Upgrade from SQL Server 6.x to SQL Server 7.0 or SQL Server 2000' с советами вроде "An alternative solution is to drop the primary key constraint, and then re-create it."...

но думаю спросить будет лучше и вот спрашиваю.
Специалисты по БД (и по БД Януса в частности), подскажите пожалуйста что надо полечить?

A>Самое главное там — это нажать кнопочку Edit м поставить галку Enable identity insert напротив каждой таблицы. Мастер переносил данные быстрее Access, но тоже более получаса.


там кстати можно с шифтом выделить всю группу, и разом выставить указанную галочку
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[2]: История ЕЩЕ одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 04.10.06 12:46
Оценка:
Здравствуйте, Valery A. Boronin, Вы писали:

Полагаю, что дело в том, что БД будет таки пытаться соблюдать целостность и корректность индексов и проч. Поэтому сначала нужно перенести таблицы-"справочники", а уже потом браться за более сложные по структуре.

Ну и про

галку Enable identity insert напротив каждой таблицы


не забыть.

А после каждой неудачи таблицу-destination надо очищать от записей.

VAB>

VAB>An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80004005 Description: "Violation of PRIMARY KEY constraint 'PK_messages_outbox'. Cannot insert duplicate key in object 'dbo.messages_outbox'.".


Очень похоже именно на ту самую галочку.

VAB>попробовал наудачу пускануть скрипт IT приведенный по ссылке выше — частично что-то в нем сработало что-то нет, потом импорт все равно не пошел и я иссяк


Лучше не пробовать, без индексов после него тормозит сильно.

VAB>там кстати можно с шифтом выделить всю группу, и разом выставить указанную галочку


Не додумался в своё время.
... << RSDN@Home 1.2.0 alpha rev. 655>> SQLE 2005
Re[3]: История ЕЩЕ одного перехода на SQLEXPRESS
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 04.10.06 17:14
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Полагаю, что дело в том, что БД будет таки пытаться соблюдать целостность и корректность индексов и проч. Поэтому сначала нужно перенести таблицы-"справочники", а уже потом браться за более сложные по структуре.


можно поподробнее какие таблички — справочники а какие нет?
как мне понять соблюдаю я или нет целостность индексов

я пока просто говорю сделай мне импорт и все, а дальше для меня непознанные тропы

A>

галку Enable identity insert напротив каждой таблицы

A>не забыть.

так я же писал что не забывал я эту галку — не помогло

A>А после каждой неудачи таблицу-destination надо очищать от записей.


а это наоборот — сначала везде ставил галочку "Delete rows in destination table" и не мог перегнать в т.ч. messages. Потом ее убрал — и смог... нужно ли как-то руками чистить каждую переносимую табличку, в чем суть этого предложения — разве я этого не делал до, см мой отчет?

VAB>>

VAB>>An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80004005 Description: "Violation of PRIMARY KEY constraint 'PK_messages_outbox'. Cannot insert duplicate key in object 'dbo.messages_outbox'.".


A>Очень похоже именно на ту самую галочку.


VAB>>попробовал наудачу пускануть скрипт IT приведенный по ссылке выше — частично что-то в нем сработало что-то нет, потом импорт все равно не пошел и я иссяк


A>Лучше не пробовать, без индексов после него тормозит сильно.

хорошо, это не буду трогать

VAB>>там кстати можно с шифтом выделить всю группу, и разом выставить указанную галочку


A>Не додумался в своё время.


сухой остаток: спасибо за ответ, но что делать то конкретно? свою ситуацию я запротоколировал по ходу возни — не могли бы Вы посмотреть что и на каком шаге мне нужно изменить\попробовать чтобы избежать таких сообщений с ошибками?
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[4]: История ЕЩЕ одного перехода на SQLEXPRESS
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 08.10.06 20:53
Оценка:
поборол: использовал оригинальный скрипт из сообщения автора ветки.

То, что генерит SQL EXPRESS 9 SP1 отчего-то не катит.
Там разница вот в чем оказалась при сравнении скриптов:

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[messages_outbox]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[messages_outbox](
[dte] [datetime] NOT NULL,
[gid] [int] NULL,
[hold] [bit] NOT NULL DEFAULT ((0)),
[message] [ntext] NULL,
[mid] [int] IDENTITY(1,1) NOT NULL,
[reply] [int] NOT NULL,
[subject] [nvarchar](128) NULL,
[tagline] [nvarchar](128) NULL,
CONSTRAINT [PK_messages_outbox] PRIMARY KEY CLUSTERED
(
[mid] ASC
было: )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
стало: [b])WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END

и так на всех таблицах.

Так что могу лишь сказать — используйте вариант akasoft
Автор: akasoft
Дата: 05.02.06


Happy Access -> SQL migrating!
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re: История одного перехода на SQLEXPRESS
От: Morpheus_  
Дата: 28.02.07 13:14
Оценка:
Здравствуйте, akasoft, Вы писали:

A>
CREATE TABLE [dbo].[messages](
        [dte] [datetime] NOT NULL,
        [gid] [int] NOT NULL,
        [ismarked] [bit] NOT NULL DEFAULT ((0)),
        [isread] [tinyint] NOT NULL DEFAULT ((0)),
        [message] [ntext] NULL,
        [mid] [int] NOT NULL,
...
A>


почему isread tinyint, а не bit?
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[2]: История одного перехода на SQLEXPRESS
От: akasoft Россия  
Дата: 28.02.07 13:26
Оценка:
Здравствуйте, Morpheus_, Вы писали:

M_>почему isread tinyint, а не bit?


Чтобы можно было индексировать. Оптимизация при поиске/сортировке.
... << RSDN@Home 1.2.0 alpha rev. 675>> SQLE 2005
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.