EntityFrameWork, EventLog - tag
https://ask.chadgpt.ru/share/26676638-280f-403d-aa5f-f108a7c43c65
EntityFrameWork, EventLog - tag
https://ask.chadgpt.ru/share/26676638-280f-403d-aa5f-f108a7c43c65
SQL Server Delete
https://ask.chadgpt.ru/share/ca0f14c0-5b36-4f36-8762-0f4d76aff440
Заходим в Programs
Выбираем SQL Server
Жмем update/delete
Запускается Установщик
Удаляем ненужный экземпляр.
Частые причины:
Для учебных и домашних проектов лучше всего Developer — он дает всё, как “в бою”, но БД нельзя развертывать “в бизнесе”, только учиться или тестировать.
Если маленькая “рабочая” база — можно Express.
Для компаний и продуктов — только коммерческие лицензии (Standard/Enterprise), их функционал не урезан, нет ограничений на размер, машины и ресурсы.
-------------------------------------
Выполните:
dotnet add package Microsoft.EntityFrameworkCore.SqlServerpublic class TestTable2
{
public int ID { get; set; }
public int DataInt { get; set; }
public string DataChar { get; set; }
}using Microsoft.EntityFrameworkCore;
public class TestDbContext : DbContext
{
public DbSet<TestTable2> TestTable2 { get; set; }
private string _connectionString;
public TestDbContext(string connectionString)
{
_connectionString = connectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(_connectionString);
}
}using System;
using System.Linq;
namespace Ca_DB_Model_Init_02
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
string connectionString = "Server=WIN-0EMQO515V3S\\SQLDVLP25;Database=TestDataBase;Integrated Security=True;Trust Server Certificate=True";
try
{
using (var db = new TestDbContext(connectionString))
{
var records = db.TestTable2.ToList();
foreach (var row in records)
{
Console.WriteLine($"Id: {row.ID}, : {row.DataInt}, : {row.DataChar}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка подключения: {ex.Message}");
}
}
}
}----------------Int, bigintDateTime, DateTime2Modified, CreatedОба типа, datetime и datetime2, используются в SQL Server для хранения даты и времени, но между ними есть отличия:
1. datetime2 — рекомендуемый выбор:
datetime2
— более новый тип, обладает большей точностью (до 7 знаков после
запятой) и может хранить более широкий диапазон дат: от 0001-01-01 до
9999-12-31. datetime — старый тип, точность до 3 миллисекунд, диапазон от 1753-01-01 до 9999-12-31.
2. Совместимость с C#:
В C# оба обычно связывают с типом DateTime.
3. Рекомендация Microsoft:
- Microsoft рекомендует использовать
datetime2 для новых разработок потому что он более современный и гибкий - (https://learn.microsoft.com/ru-ru/sql/t-sql/data-types/datetime2-transact-sql).
Чтобы поле Modified заполнялось автоматически при добавлении записи в SQL Server,
используйте тип данных datetime2 (или datetime) и укажите в определении столбца значение по умолчанию —
функцию SYSDATETIME() (для datetime2) или GETDATE() (для datetime).
Пример:
CREATE TABLE YourTable (
Id int PRIMARY KEY,
OtherColumn nvarchar(100),
Modified datetime2 NOT NULL DEFAULT SYSDATETIME()
);
или для уже существующей таблицы:
ALTER TABLE YourTable ADD Modified datetime2 NOT NULL DEFAULT SYSDATETIME();
или, если столбец уже есть, но нет значения по умолчанию:
ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable_Modified DEFAULT SYSDATETIME() FOR Modified;
---
INSERT INTO [dbo].[TestTable2]
([DataInt], [DataChar], [Created], [Modified])
VALUES
(101, N'Первая запись', SYSDATETIME(), SYSDATETIME()),
(202, N'Вторая запись', SYSDATETIME(), SYSDATETIME());
-----
Для того чтобы при вставке новых записей поля Created и
Modified автоматически заполнялись текущим временем, им нужно задать
значение по умолчанию через DEFAULT.
Это можно сделать при создании таблицы или для уже существующей с помощью ALTER TABLE.
Пример для уже существующей таблицы:
-- Для столбца Created
ALTER TABLE [dbo].[TestTable2]
ADD CONSTRAINT DF_TestTable2_Created DEFAULT (SYSDATETIME()) FOR [Created];
-- Для столбца Modified
ALTER TABLE [dbo].[TestTable2]
ADD CONSTRAINT DF_TestTable2_Modified DEFAULT (SYSDATETIME()) FOR [Modified];
Теперь, если при вставке не указывать значения для этих столбцов,
они будут автоматически заполнены текущей датой и временем.
Пример вставки — теперь без указания дат:
INSERT INTO [dbo].[TestTable2] ([DataInt], [DataChar])
VALUES (101, N'Первая запись'), (202, N'Вторая запись');
Проверьте результат:
SELECT * FROM [dbo].[TestTable2];
-----
Table - coздаем поле Midified c обновленеим при INSERT, UPDATE
- создаем поле Created c обновленеим при INSERTВот пример хранимой процедуры, которая принимает:
- @TableName — имя создаваемой таблицы
- @IdType — тип ID-поля:
'int' или 'bigint' (по умолчанию 'int')
Также создаёт поля ID, Created (дату создания),
Modified (дату последнего изменения,
обновляется и при вставке, и при обновлении).
CREATE PROCEDURE dbo.CreateStandardTable
@TableName NVARCHAR(128),
@IdType NVARCHAR(10) = N'int'
AS
BEGIN
SET NOCOUNT ON;
-- Проверьте существование таблицы
IF EXISTS (
SELECT * FROM sys.tables WHERE name = @TableName AND schema_id = SCHEMA_ID('dbo')
)
BEGIN
RAISERROR(N'Таблица %s уже существует.', 16, 1, @TableName);
RETURN;
END
-- Собираем динамический SQL для создания таблицы
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'CREATE TABLE [dbo].[' + @TableName + N'] (
[ID] ' + @IdType + N' IDENTITY(1,1) NOT NULL PRIMARY KEY,
[Created] DATETIME2 NOT NULL CONSTRAINT DF_' + @TableName + N'_Created DEFAULT (SYSDATETIME()),
[Modified] DATETIME2 NOT NULL CONSTRAINT DF_' + @TableName + N'_Modified DEFAULT (SYSDATETIME())
);
';
-- Выполняем создание таблицы
EXEC sp_executesql @sql;
-- Создаём триггер для автоматического обновления Modified
DECLARE @trgSql NVARCHAR(MAX);
SET @trgSql = N'
CREATE TRIGGER [TRG_' + @TableName + N'_Modified]
ON [dbo].[' + @TableName + N']
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE t
SET Modified = SYSDATETIME()
FROM [dbo].[' + @TableName + N'] t
INNER JOIN inserted i ON t.ID = i.ID;
END;
';
EXEC sp_executesql @trgSql;
ENDModified при UPDATE.Created автоматически проставляется при INSERT.int или bigint, по вашему выбору.После этого строка добавится, все поля заполнятся автоматически.
Когда вы получите ошибку?
Если хотя бы у одного поля в таблице:
то INSERT DEFAULT VALUES вызовет ошибку.
В T‑SQL (MS SQL Server) сделать полностью "пустой" UPDATE,
чтобы не изменять ни одного значения, нельзя напрямую.
Команда вида:
UPDATE TestTable3 SET;— вызовет синтаксическую ошибку.
Однако вы можете явно указать установку столбца в его текущее значение. Например, если ваша таблица называется TestTable3, и у неё есть столбец, допустим, Id, вы обновляете так:
UPDATE TestTable3 SET Id = Id;Или если таблица содержит другие столбцы (например, Name), можно выполнить:
UPDATE TestTable3 SET Name = Name;Это обновление не меняет значения в таблице фактически, но "проходит" как UPDATE. Все триггеры и вычисляемые поля, связанные с UPDATE (например, поля Modified с дефолтом GETDATE() ON UPDATE или через триггер), будут обработаны.
Если вы хотите обновить только одну строку (например, ту, которую только что вставили), добавьте WHERE:
UPDATE TestTable3 SET Id = Id WHERE Id = 123;— где Id = 123 — условие для нужной строки.
Важное замечание:
Поле
Created обычно заполняется один раз (при вставке), тогда как поле
Modified обновляется при каждом UPDATE (обычно через триггер или
выражение типа DEFAULT GETDATE() OVER UPDATE, если используется более
современная версия SQL Server).
Вывод:
"Пустой" UPDATE — это UPDATE с присваиванием любого столбца самого себе. Например:
UPDATE TestTable3 SET [ЛюбойСтолбец] = [ЛюбойСтолбец];Это защёлка для вызова триггеров, пересчёта computed-столбцов или обновления вашего поля Modified.
в SQL сервере (MS SQL Server), имена столбцов (и таблиц) не обязательно брать в кавычки, если их имена не содержат пробелов, специальных символов или не совпадают с зарезервированными словами. В вашем примере:
UPDATE TestTable3 SET Name = Name;оба Name
— это ссылка на одноимённый столбец таблицы. Кавычки не требуются, если
имя столбца простое, латинское и без спецсимволов или пробелов.
Однако, если бы имелся столбец с названием, например, My Name (с пробелом), тогда его пришлось бы взять в квадратные скобки:
UPDATE TestTable3 SET [My Name] = [My Name];Итак,
Name = Name — корректный синтаксис для стандартного столбца без кавычек/скобок. [Name].P.S. Английское слово Name
редко бывает зарезервированным в популярнейших диалектах SQL, поэтому
без скобок или кавычек писать его обычно разрешается и работает
корректно.
----------------
В SQL выражении:
UPDATE TestTable3 SET Name = Name;Оба Name обозначают не строковое значение, а имя столбца таблицы.
То есть, для каждой строки таблицы вы присваиваете столбцу Name его же текущее значение.
По сути, эта команда ничего не меняет в таблице.
Когда нужны кавычки:
Если вы хотите присвоить столбцу Name строковое значение, например, “Петя”,
тогда действительно пишется так:
UPDATE TestTable3 SET Name = 'Петя';Здесь 'Петя' — это строковое значение, и кавычки обязательны.
Когда кавычки НЕ нужны:
В вашем изначальном варианте UPDATE TestTable3 SET Name = Name;
оба раза Name — это ссылка на столбец, никаких кавычек не надо.
Итого:
Name = Name — обе части указывают на столбец, кавычки не нужны.Name = 'something' — справа строка, кавычки нужны.Если хотите присвоить строку, берите в кавычки.
Если копируете значения из столбца — кавычки не нужны.
SQL-запрос сработал именно так, как вы ожидали.
Вот что произошло:
[Name] на значение 'NAME1' только для той записи, у которой [ID] = 2.[ID] = 2 поле [Name] изменилось (стало 'NAME1'), а поле [Modified]
получило новое значение времени (это обычно делается через триггер или в
ручную ставится новое время, если логика такая заложена).[ID] = 1 и [ID] = 3 изменений нет ([Name] остался прежним, [Modified] тоже не поменялся).Объяснение:
Оператор UPDATE меняет только те строки, которые подходят под условие в WHERE. Все остальные остаются без изменений.
Обновляемые столбцы (например, Modified) могут обновляться автоматически, если в таблице есть триггер на обновление,
либо вы явно задаёте новое значение через SET Modified = GETDATE(), например.
В вашем примере видно:
Всё
логично и подтверждает корректную работу запроса и базы данных. Если
нужно автоматически обновлять дату последних изменений (Modified), обычно используют триггеры на таблице,
или добавляют в UPDATE ещё одну колонку:
UPDATE TestTable3
SET [Name] = 'NAME1', [Modified] = GETDATE()
WHERE [ID] = 2Тогда время изменения фиксировалось бы прямо при апдейте.
Если остались вопросы по SQL или по работе с базой данных — спрашивайте!
SQLite vs MSSQL localDB
https://ask.chadgpt.ru/share/9ef35e6e-d478-41e4-bc48-dc0762e9d5bd
_______________________________________________________________________
SqlLocalDB create MyInstance
SqlLocalDB start MyInstance
SqlLocalDB info MyInstance
SSMS вход (localdb)\MyInstance в SSMS
CREATE DATABASE TestDB; SELECT name FROM sys.databases; USE TestDB;
CREATE TABLE People (
Id INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(100),
Age INT
); INSERT INTO People (Name, Age) VALUES (N'Иван', 30); SELECT * FROM People;Полезные замечания:
C:\Users\<Пользователь>\)Connect
var connectionString = @"Server=(localdb)\MyInstance;Database=TestDB;Trusted_Connection=True;";
D:\VC25\gs.trade.core\EntityFrmSamples\EntityFrmSamples.sln
D:\VC25\gs.trade.core\EntityFrmSamples\Ca_People_01\Ca_People_01.csproj
SQLite, SqlLocalDB, ConnectionString
SQLite vs MSSQL localDB
https://ask.chadgpt.ru/share/9ef35e6e-d478-41e4-bc48-dc0762e9d5bd
LocalDB действительно поставляется как часть дистрибутива SQL Server Express («SQLExpress»), но также его можно установить отдельно.
SQL Server Express — это бесплатная версия SQL Server для разработчиков и небольших приложений. Она может устанавливаться в двух основных вариантах: как "основная" Express-версия (полноценный SQL сервер) и как LocalDB, облегчённая версия для разработчиков, которая легче использовать локально и не требует сложной конфигурации службы.
SQLLocalDB command
sqllocaldb i
sqllocaldb info MSSQLLocalDB
MSSQLLocalDB — это "SQL Server Express LocalDB", компонент бесплатной редакции SQL Server Express, и по поддерживаемым возможностям он почти не отличается от полноценного SQL Server Express, кроме режима запуска (локальный, пользовательский, упрощённая установка и т. д.).
Ответы детально:
1. Stored Procedures (Хранимые процедуры):
Да,
в LocalDB можно создавать, изменять и выполнять хранимые процедуры ―
точно так же, как на полноценном сервере SQL Server любых редакций
(Express, Standard, Enterprise).
2. Triggers (Триггеры):
Да,
триггеры в LocalDB поддерживаются полностью. Можно создавать
DML-триггеры (AFTER/INSTEAD OF/BEFORE INSERT, UPDATE, DELETE и др.).
3. SYSTEMDATETIME:
Да, функция SYSDATETIME() поддерживается в LocalDB ― она возвращает дату и время (тип datetime2). Также поддерживаются функции GETDATE(), CURRENT_TIMESTAMP и другие стандартные функции времени, как и на другой редакции SQL Server.
---
PolyBase Query Service for External Data — это компонент Microsoft SQL Server, который позволяет выполнять запросы к внешним источникам данных, как если бы это были обычные таблицы в базе SQL Server. Проще говоря, PolyBase позволяет объединять данные из разных источников прямо в SQL-запросах. Например, вы можете делать JOIN между таблицей в SQL Server и файлом CSV в HDFS (Hadoop) или объекте в Azure Blob Storage. Также PolyBase поддерживает работу с другими SQL Server, Oracle, Teradata, MongoDB и т.д.
---------
Опция "Machine Learning Services and Language Extensions" в установщике SQL Server добавляет поддержку выполнения кода на языках программирования, предназначенных для анализа данных и машинного обучения, непосредственно внутри SQL Server. Эта функция позволяет выполнять сложные аналитические задачи и машинное обучение без необходимости выгружать данные из базы — код выполняется прямо на сервере рядом с данными.
Что входит в эту опцию:
sp_execute_external_script).Зачем это нужно?
Это удобно для компаний и специалистов, которые хотят делать оперативную аналитику, строить отчёты с использованием кода R или Python, запускать ML-модели без миграции данных во внешние системы анализа. Например, вы можете прогнозировать продажи, искать аномалии, делать кластеризацию, строить графики — и всё это внутри SQL Server.
Примечания:
Вывод:
Если
эта опция выбрана, SQL Server сможет запускать машинное обучение и
аналитический код на выбранных вами языках, и ваши аналитики смогут
писать скрипты Python или R, не покидая среды SQL Server.
--
1. Сервис SQL Server запущен ли?
Перейдите в «Службы» Windows (services.msc) и найдите службу с именем вроде SQL Server (SQLEXPRESS) — статус должен быть «Работает» или «Выполняется».
2. Подключается ли SQL Server Management Studio (SSMS)?
Если у вас установлен SSMS, попробуйте подключиться к серверу.
Для Express по умолчанию это .\SQLEXPRESS или localhost\SQLEXPRESS.
Если вход успешный — это главный признак работоспособности.
3. Создается ли новая база данных?
После подключения попробуйте создать тестовую БД через SSMS или запросом:
CREATE DATABASE TestDB;4. Создается/работает ли таблица и простые запросы?
Создайте таблицу и вставьте данные:
USE TestDB;
CREATE TABLE TestTable (ID INT PRIMARY KEY, Name NVARCHAR(50));
INSERT INTO TestTable VALUES (1, N'Тест');
SELECT * FROM TestTable;Если всё работает — SQL Server установлен и функционирует.
5. Проверить журнал установки
Если есть сомнения — посмотрите журнал установки SQL Server (обычно хранится в C:\Program Files\Microsoft SQL Server\<номер версии>\Setup Bootstrap\Log\).
6. Доступ через приложения
Попробуйте подключиться к серверу из стороннего приложения (например, Excel, скрипта Python через pyodbc/pymssql и др.).
7. Проверить конфигурацию портов/сетевого доступа (по желанию)
Для
сетевого подключения удостоверьтесь, что SQL Server Express настроен на
TCP/IP, и соответствующий порт (обычно 1433) открыт в брандмауэре, если
нужно подключение с других машин.
SQL Server Launchpad (SQLEXPRESS)
Это
служба, которая отвечает за запуск и обработку внешних скриптов,
например, на языках R или Python, внутри SQL Server (так называемая
“Machine Learning Services”). Начиная с SQL Server 2016 появилась
возможность запускать аналитические скрипты прямо в базе данных, не
только на T-SQL, но и с помощью R или Python, чтобы, например,
анализировать данные или строить модели машинного обучения на лету.
Если вы не используете внешние скрипты/машинное обучение в SQL Server, службу SQL Server Launchpad можно оставить остановленной — это никак не мешает работе стандартной базы.
SQL Full-text Filter Daemon Launcher (SQLEXPRESS)
Эта
служба используется для полнотекстового поиска — это расширенная
возможность поиска по текстовым данным и документам прямо в базе данных.
Например, если вы хотите искать по большому объёму текстовых полей (или
файлов Word/Excel/PDF) с поддержкой морфологии (склонения, падежи и т.
д.) и прочих “умных” функций.
Если вы не используете полнотекстовый поиск, можете спокойно держать службу остановленной.
Резюме
Обе
эти службы — дополнительные возможности. SQL Server и SQL Server Agent
нужны для обычной работы и автоматизации задач, остальные можно
запускать только при необходимости соответствующего функционала.
--
LocalDB — это облегчённая версия Microsoft SQL Server, предназначенная для разработчиков. Обычно она используется для разработки и тестирования приложений на локальной машине. LocalDB интегрируется, в первую очередь, со средой Visual Studio.
Где искать LocalDB на компьютере:
SqlLocalDB.exe.C:\Program Files\Microsoft SQL Server\130\Tools\Binn\или, для более новых версий (например, 2019 и позже):
C:\Program Files\Microsoft SQL Server\150\Tools\Binn\
C:\Program Files\Microsoft SQL Server\160\Tools\Binn\Номер папки (130, 140, 150, 160) — это номер версии SQL Server (2016, 2017, 2019, 2022 и т. д.).
where SqlLocalDBЭта команда покажет путь к исполняемому файлу, если он добавлен в переменную окружения PATH.
SqlLocalDB.exe i(или SqlLocalDB i) — эта команда покажет установленные экземпляры LocalDB.
(localdb)\MSSQLLocalDBили
(localdb)\ProjectsV13(название экземпляра можно увидеть через команду выше).
LocalDB в списке служб
В отличие от обычного SQL Server, LocalDB не отображается в службах Windows (services.msc) — она запускается только при необходимости, в контексте пользователя.
Вывод:
LocalDB “прячется” в папке Tools\Binn, не видна в системных службах, управляется через SqlLocalDB.exe
и часто используется по умолчанию в проектах Visual Studio. Если что-то
не находится, спросите — помогу найти по вашим параметрам!
--
1. Узнать состояние экземпляра
Запустите команду, чтобы посмотреть состояние интересующего экземпляра (например, MSSQLLocalDB):
SqlLocalDB.exe info MSSQLLocalDBЭто покажет более подробную информацию: состояние, путь к базе, порт и т.д.
2. Запустить экземпляр (если не запущен):
SqlLocalDB.exe start MSSQLLocalDB3. Подключиться к экземпляру через SQL Server Management Studio (SSMS):
В поле "Server name" укажите:
(localdb)\MSSQLLocalDBили
(localdb)\ProjectModelsв зависимости от того, к какому экземпляру хотите подключиться.
4. Узнать путь к файлам базы данных, если нужно:
В результате команды на шаге 1 будет строка Instance pipe name — это строка, по которой можно подключиться из других приложений.
Пример подключения в строке подключения для .NET:
Server=(localdb)\MSSQLLocalDB;Integrated Security=true;Если нужен пример подключения из кода, или инструкция по созданию новой базы в LocalDB — просто уточните ваш вопрос!
--
В SQL Server Management Studio (SSMS):
(localdb)\ProjectModelsЕсли используется строка подключения (например, для .NET/EF Core):
Server=(localdb)\ProjectModels;Integrated Security=True;Если потребуется именно MSSQLLocalDB, выполните в PowerShell/командной строке:
SqlLocalDB.exe start MSSQLLocalDBInstance pipe name нужен чаще для отладки либо если клиент не видит экземпляр обычным образом, тогда строка подключения выглядит так:
np:\\.\pipe\LOCALDB#8A103913\tsql\queryНо обычно проще использовать (localdb)\ProjectModels.
--
"ConnectionStrings": {
"RazorPagesMovieContext": "Server=(localdb)\\MSSQLLocalDB;Database=RazorPagesMovieContext-afcfd43d-e8d7-4af9-9f89-7dfa9b74656f;Trusted_Connection=True;MultipleActiveResultSets=true"
}
---
Посмотреть:
Откройте SQL Server Management Studio (SSMS), подключитесь к серверу
(localdb)\MSSQLLocalDBи в списке баз увидите подобные базы.
Удалить:
Можно просто удалить базу через контекстное меню в SSMS или выполнив в окне запросов:
DROP DATABASE [RazorPagesMovieContext-afcfd43d-e8d7-4af9-9f89-7dfa9b74656f]--------------Создание экземпляра Microsoft SQL Server LocalDB средствами самой программы
SQL Server Management Studio (SSMS) невозможно напрямую, потому что LocalDB
— это облегчённая версия SQL Server, предназначенная в первую очередь
для разработчиков, и она разворачивается и управляется через консольные
команды (обычно через SqlLocalDB.exe).
Выполнить создание новой LocalDB через SSMS штатными "мастером" невозможно.
Однако подключаться к существующей LocalDB базе через SSMS можно.
Вот подробные инструкции, как создать новый экземпляр LocalDB, а затем подключиться к нему через SSMS:
1. Установите SQL Server Express LocalDB
Если LocalDB ещё не установлен,
загрузите и установите компонент https://aka.ms/sqlexpress (или с официального сайта).
2. Создайте экземпляр LocalDB через командную строку
Откройте командную строку (cmd.exe) от своего имени пользователя (НЕ от администратора!)
и выполните команду:
SqlLocalDB create MyInstance
Здесь MyInstance — это имя вашего нового экземпляра LocalDB. Можно выбрать любое удобное имя.
Чтобы запустить экземпляр, выполните команду:
SqlLocalDB start MyInstance
Если вы хотите сразу создать и запустить, то можно обе команды подряд.
3. Найдите строку подключения
Чтобы узнать путь к экземпляру, введите:
SqlLocalDB info MyInstance
Или для списка всех экземпляров:
SqlLocalDB i
Вы увидите строку вида:
(localdb)\MyInstance
4. Подключитесь к LocalDB с помощью SSMS
- Откройте SQL Server Management Studio.
- В окне подключения в поле Server name укажите:
(localdb)\MyInstance
или, если вы используете стандартный экземпляр:
(localdb)\MSSQLLocalDB
- Тип аутентификации — Windows Authentication (под той же учёткой).
- Нажмите Connect.
Частые вопросы
- Можно ли создать LocalDB средствами SSMS?
Нет, только через командную строку. - Можно ли управлять LocalDB через SSMS?
Да,
LocalDB после запуска появляется в списке экземпляров, её можно
использовать почти как обычный SQL Server Express, за исключением
серверных функций (агент, доступ по сети и др.). - Как удалить экземпляр LocalDB?
SqlLocalDB delete MyInstance
---
Project
D:\VC25\gs.trade.core\EntityFrmSamples\EntityFrmSamples.sln
D:\VC25\gs.trade.core\EntityFrmSamples\Ca_People_01\Ca_People_01.csproj
ConnectionString:
var connectionString = @"Server=(localdb)\MyInstance;Database=TestDB;Trusted_Connection=True;";
---
Проект
- Для создания новой базы данных используйте, например, запрос:
CREATE DATABASE TestDB;
- Для просмотра уже существующих баз:
SELECT name FROM sys.databases;
- Чтобы создать новую таблицу:
USE TestDB;
CREATE TABLE People (
Id INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(100),
Age INT
);
- Для вставки данных:
INSERT INTO People (Name, Age) VALUES (N'Иван', 30);
- Просмотр данных:
SELECT * FROM People;
Полезные замечания:
- LocalDB создаёт файлы баз данных в профиле пользователя (обычно это папка вида
C:\Users\<Пользователь>\) - Все ваши действия доступны только для вас (а не для других пользователей ПК).
- LocalDB — идеальный инструмент для разработки, тестирования, обучения.
---. Убедитесь, что создана база и таблица
В Management Studio или через скрипт вы уже создали:
- Экземпляр LocalDB —
MyInstance - Базу данных —
TestDB - Таблицу —
People с данными
2. Создайте консольный проект .NET
Откройте Visual Studio:
- Создайте новый проект: Console App (.NET Core)
- Назовите, например,
EfCoreLocalDbDemo
3. Установите нужные NuGet-пакеты
Откройте Package Manager Console или используйте UI:
Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
4. Пример кода
Program.cs (или нужный файл):
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace EfCoreLocalDbDemo
{
// 1. Сущность
[Table("People")]
public class Person
{
public int Id { get; set; }
public string Name { get; set; } = "";
public int Age { get; set; }
}
// 2. Контекст
public class TestDbContext : DbContext
{
public DbSet<Person> People { get; set; } = null!;
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connectionString = @"Server=(localdb)\MyInstance;Database=TestDB;Trusted_Connection=True;";
optionsBuilder.UseSqlServer(connectionString);
}
}
// 3. Основная программа
class Program
{
static void Main()
{
using var db = new TestDbContext();
Console.WriteLine("Список людей в базе TestDB:");
List<Person> people = db.People.ToList();
foreach (var person in people)
{
Console.WriteLine($"Id={person.Id} Name={person.Name} Age={person.Age}");
}
}
}
}
5. Обратите внимание на важные моменты
- Проверьте, что экземпляр LocalDB
MyInstance существует, и база TestDB создана. - Строка подключения
- Server=(localdb)\MyInstance;Database=TestDB;Trusted_Connection=True;
- корректна для LocalDB и Windows-авторизации.
- Если возникнут ошибки подключения,
- проверьте имя LocalDB (в терминале:
sqllocaldb i чтобы увидеть список) - и что база действительно создана там.
- Миграции не нужны, так как база и таблица уже созданы по вашему SQL-скрипту.
Запуск
Скомпилируйте и запустите проект. Вы увидите строки:
Список людей в базе TestDB:
Id=1 Name=Serge Age=42
Id=2 Name=Marianna Age=35
-----Вы абсолютно
правы: Том Декстра (Tom Dykstra) выбрал LocalDB для своего туториала по
Razor Pages не случайно. LocalDB идеально подходит для обучающих
материалов и примеров, особенно по следующим причинам:
Во-первых,
LocalDB не требует отдельного сервера или сложной установки. Его можно
развернуть буквально за пару минут, он запускается только при
необходимости и не потребляет ресурсы постоянно.
Во-вторых,
для начинающих очень важно иметь среду, повторяющуюся у большинства
разработчиков. LocalDB интегрируется с Visual Studio, и практически
гарантировано будет работать у каждого, кто следит за официальными
гайдами Microsoft.
Кроме того, всё, что касается SQL
Server (типы данных, язык запросов, хранимые процедуры, транзакции,
менеджмент через SSMS), поддерживается и в LocalDB. Это позволяет
разрабатывать и отлаживать полноценные приложения, которые легко
переносятся в «боевой» SQL Server, если потребуется.
И
наконец, LocalDB удобен для тестирования, отработки миграций (например,
через Entity Framework), написания юнит-тестов и раздельной работы над
своим экземпляром БД, не мешая другим пользователям или команде.
Подводя
итог, выбор LocalDB для обучающих проектов — грамотное решение: это
сочетание простоты, совместимости с «большим» SQL Server и достаточной
мощности для большинства учебных и домашних задач.
SQLite,SqlLocalDB,SQLite vs MSSQL localDB, MSSQL Versions
SQLite vs MSSQL localDB
https://ask.chadgpt.ru/share/9ef35e6e-d478-41e4-bc48-dc0762e9d5bd
SQLite — это легковесная, встраиваемая реляционная база данных. Она очень проста в использовании, не требует отдельного серверного процесса и хранит все данные в одном файле на диске. Основные её преимущества — минимальный размер, кроссплатформенность, простота развертывания и отсутствие необходимости в установке сервера или сложной настройке. SQLite часто применяется в мобильных приложениях, небольших десктопных приложениях, для прототипирования и случаев, когда не требуется работа с большими объёмами данных или высокой нагрузкой.
MS SQL Server LocalDB — это упрощённая версия Microsoft SQL Server, предназначенная для разработки и тестирования. LocalDB также проста в установке, не требует полноценного серверного окружения и запускается только по требованию пользователя или приложения. Она совместима с большинством инструментов SQL Server, таких как Management Studio, поддерживает те же типы данных и большинство функций "большого" SQL Server. LocalDB обычно используется .NET разработчиками, когда нужно локальное окружение для разработки с возможностью миграции на полноценный сервер SQL Server без изменений в коде.
Ключевые отличия:
Вывод:
SQLite
лучше всего подходит для кроссплатформенных, легковесных проектов,
прототипирования, мобильных приложений и ситуаций, когда вам нужна
быстро развертываемая автономная база данных без лишних зависимостей. MS
SQL Server LocalDB больше подходит для разработчиков под Windows,
использующих стек .NET, которым важно максимально простое локальное
окружение, совместимое с промышленными версиями SQL Server, а также
расширенные возможности реляционной СУБД Microsoft.
------------
Версия SQL Server с номером 15.x.xxxx относится к SQL Server 2019.
То же касается и LocalDB — для каждой современной редакции SQL Server существует своя версия LocalDB:
Самая новая на 2024 год — это 16.x (SQL Server 2022 LocalDB).
Последний официальный cumulative update на момент июня 2024 — SQL Server 2022 (16.0.1100.1) и далее.