(SiteMap)
SQL
Программирование в SQL SERVER
С базами данных в плане администрирования я сталкивался с самого начала своей
карьеры, но всерьез в СУБД я впервые окунулся в 1989 году, когда появилась dBase
IV. Это был интерактивный интерплетатор реляционной СУБД на языке SQL-89,
работавший под MS-DOS. Со временем этот стандарт был расширен до SQL-92 и,
наконец, до нынешнего SQL-99. Хотя основа языка SQL осталась прежняя, но со
временем в язык добавилось несколько новых конструкций типа Inner Join,
Union и др. Впрочем dBase IV быстро отошел и
уступил место интерплератору Foxpro и компилятору Clipper - на нем-то я и
работал несколько лет приобретя незаменимый опыт проектирования и реализации
разных АСУП'ов. По четвертому Clipper'у я даже получил сертификат в Nantucket - только потом потерял его. Clipper вообще оказался очень удачным языком - и поныне в
организациях полно программ на нем - к сожалению, они как правило все без
исходных текстов и при обслуживании выручают только его декомпиляторы.
На MS SQL я реализовал подавляющее большинство своих проектов. Сегодня MS SQL Server - это адская машина, у которой сотни специфических обьектов, отсутствующих в простейших SQL-серверах:
Aggregate,
Application Role,
Assembly,
Asymmetric Key,
Broker Priority,
Certificate,
Check Constraint,
CLR Database Trigger,
CLR Instead Of Trigger,
CLR Procedure,
CLR Scalar Function,
CLR Server Trigger,
CLR Table Function,
CLR Trigger,
ColumnStore Index,
Contract,
Credential,
Cryptographic Provider,
Custom Message,
Database Audit Specification,
Database Encryption Key,
Database Role,
Database Scoped Credential,
Database Trigger,
Default Constraint,
Default,
Endpoint (ServiceBroker over TCP),
Endpoint (SOAP over HTTP),
Event Notification,
Event Session,
Extended Property,
External Data Source,
External File Format,
External Table,
File,
FileGroup MemOpt,
FileGroup With Filestream,
FileGroup,
FileTable,
Foreign Key,
Full Text Stoplist,
Fulltext Catalog,
Fulltext Index,
Index,
Inline Function,
Instead Of Trigger,
Linked Server Login,
Linked Server,
Log File,
Login SqlServer,
Login,
Master Key,
Message Type,
Partition Function,
Partition Scheme,
Primary Key,
Procedure NativeComp,
Procedure,
Queue,
Remote Service Binding,
Route,
Rule,
Scalar Function,
Schema,
Script Build,
Script,
Search Property List,
Security Policy,
Selective XML Index,
Sequence,
Server Audit Specification,
Server Audit,
Server Role,
Server Trigger,
Service,
Signature,
Spatial Index,
Statistics,
Svr Role Membership,
Symmetric Key,
Synonym,
Table Function,
Table MemOpt with Filegroup,
Table MemOpt,
Table SysVersioned,
Table,
Trigger,
Type,
Unique Key,
User Defined Table Type MemOpt,
User Defined Table Type,
User with Password,
User,
User-defined Type,
View,
XML Index,
XML Schema Collection (xsd).vstemplate,
XML Schema Collection.
Но и это лишь цветочки MS SQL сервера, ягодки сервера в том, что помимо четырех основных команд, присутствующих в примитивных SQL-серверах (SELECT, UPDATE, INSERT, DELETE), микрософтовский SQL сервер расширяется своими собственными функциями в произвольном направлении. Эти функции расширения могут выполнять все что угодно, обычно например ходят в интернет, что-то там скачивают, парсят, записывают в файловую систему или таблички. А меня на сайте описано несколько моих собственных расширений - SQL CRL Assembly:
Топики, посвященных MS SQL-серверу, довольно хаотично разбросаны по моему сайту - может быть когда нибудь я их соберу в один список. Вот навскидку несколько моих заметок с этого сайта за последние несколько лет:
- (2023) - What is SPLA License and why Kamatera. #Cloud #Sql
- (2023) - Correct connection string for ancient ASP sites with MS SQL. #Sql
- (2022) - Tune SQL-dbmail COM-component. #Ssl #Mailing #ComObject
- (2022) - SqlJson useful links. #Xml #Sql
- (2021) - SQLServerTxtDump - my typical windows console utility in VB.NET. Example of System.Data.SqlClient, GetSchemaTable, DataTable/DataRow, Action/Func, Linq, Tuple, IEnumerable, Iterator, Yield, Byte.ToString("x2"), DBNull, Array of Object. #WinDesktop #Yield
- (2021) - Use SqlDependency/SqlServiceBroker to send notification to SignalR hub
- (2020) - How Linux Net Core 3.1 daemon (in VB.NET) can read/write data from/to ancient MS SQL 2005 #NetCoreBackend #Sql #WebServiceClient #WebApiServer
- (2017) - (video) My project for refactoring huge database to prepare using it in Entity Framework
- (2017) - Можливості різноманітних фриварних Compare SQL-Database tools. #DevEnvironment
- (2015) - SQL every day. #Sql #Job
- (2015) - Use sp_msforeachdb to search information in whole MS SQL Server. #Sql
- (2015) - Materialized View has accelerated SQL request a thousands times. #Sql
- (2014) - New SQL Server project templates for VS2015 #Sql #Doc
- (2012) - FileStream в MS SQL #Sql
- (2011) - Хранение в MS SQL сетевой топологии и отборы маршрутов рекурсивными CTE-процедурами #Sql
- (2011) - Открой для себя SQLite #Sql
- (2010) - Настройка производительности SQL-сервера #Servers #Device
- (2008) - Cекционирование графики при SQL-хранении #Sql #AspNetClassic #NetCommon
- (2008) - XML-коллектор параметров ASP2-форм & XSLT-генератор динамических SQL #AspNetClassic
- (2007) - Вариации на тему Notification-сервера #Sql #SqlClr #WebApiServer #WebServiceClient #NetCommon
- (2006) - Описание некоторых моих SQL-проектов #Sql
- (2005) - Прокси-сервер для передачи нотификаций об изменениях данных в SQL-сервере из локальной сети вовне. #ComObject #Sql #WebApiServer #WebServiceClient
- (2005) - TCP/IP Notification Server для SQL2000 на COM-обьекте
- (2005) - SQL Soap WebService #Sql , SQL DBMail
- (2004) - Банковское округление #NetCommon
- (2003) - Особенности работы под SQL #Ssl .
- (2002) - Transact-SQL Reference for SQL 2000 #Sql #Doc
- (2002) - Репликация #Ssl #Servers
- (2001) - MSDE #Sql
- (2000) - Синтаксис SQL #Sql #Doc
- (1999) - Access->SQL #Sql #Access
- (1998) - MySQL->SQL #Sql
В принципе, SQL - это тяжелая болезнь. Кто заболел ею - тем кажутся нелепыми и ненужными #AspNetClassic #Sql любые другие форматы баз виндузни: файловая система, реестр, WMI #WinDesktop , базы MAPI #WinDesktop , базы ActiveDirectory #Wsh , PE-данные EXE-модуля #Binary #WinDesktop , MSI-базы инсталлера #Installer #WinDesktop и все остальные структуры тоже. Кажется совершенно естественным выгрузить все данные из этого зоопарка в SQL чтобы бепрепятственно юзать потом эти данные в своих прогах уже из SQL - что и сделано в этих утилитками с открытым исходным кодом.
Я также сделал множество отдельных инструментов для выполнения различных спецопераций SQL, например: SQLBatch #WinDesktop #Ssl , скриптер/синхронизатор SQL-баз #Sql #WinDesktop , определитель формата рекордсета процедур. Большинство этих инструментов вошли в мою cобственную оболочку для управления SQL-сервером - ScriptManager - Менеджер MS SQL сервера - дополнение MS SMS для работы с большими скриптами., которой вы тоже можете попробовать воспользоватся.
|
В последние годы у меня все больше и больше стало нарастать раздражение #Microsoft #VmWare #Linux в отношении Микрософта, вызванное тем, что соотношение цена/качество у микрософтовских продуктов самое плохое в IT-индустрии. Ну что это за соотношение цена/качество SQL-сервера, если цена MS SQL 2008 составляет $57,498 на процессор, ну пусть даже $24,999 на процессор? И что это за сумма в четверть миллиона долларов? А ведь именно столько набегает для обычного малого предприятия, скажем из 10 человек, с информационно-развитой инфрастуктурой - где стоит скажем три-четыре SQL-сервера на современных многопроцессорных компьютерах. Почему примерно аналогичный MySQL Enterprise стоит всего $500, а PostgreSQL вообще бесплатен? Это очевидно несуразная цена. Слишком большая цена которую мы все должны платить просто для того, чтобы Билл Гейтс оставался самым богатым человеком планеты.
Наличие у микрософта совершенно обкастрированной версии MS SQL, работаюшей на 1-м процеесоре в 1ГБ ОЗУ с базами до 4ГБ - без аудита, без репликации, без компрессии, без материализованных вьюшек, без секционирования, с однопоточным обращением к индексам, без полнотекстового поиска, без мастеров экспорта/импорта данных, без оптимизатора JOIN-соединений, без почтовых уведомлений, без виртуализации, без сборок, без тьюнинг-адвизора, без профайлера - а еще десятки каких-то ограничений... Наличие MS SQLExpress, распространяемой микрософтом бесплатно и являющейся просто приманкой для дураков - маркетинговой уловкой по завлечению малограмотных юзеров на платформу Билла Гейтса - абсолютно ничего не меняет. Ибо даже студенты на лабораторных работах начинают понимать, что это не похоже на полноценный SQL Server. Это 10% возможностей полностью бесплатного MySQL. Проще тогда уж положить данные в последовательной текстовый файл и читать их оттуда самому своим кодом - это будет работать и быстрее и проще.
К тому же MS SQL работает только под Windows, что противоречит логике всех остальных СУБД, которые позволяют приложениям работать на любой платформе . А Windows - самая малораспространенная в природе платформа (даже на оборудовании X86 и X64 - а на оборудовании s390, s390x (32 and 64 bits), SPARC (32), PowerPC, AMD64, IA64, ARM, MIPS Windows не существует в принципе). Даже на популярной платформе X86-X64 лишь 0,4% сайтов сделаны на фирменной микрософтовской платформе #WinDesktop . И лишь чуть больше половины ноутбуков используют Windows. действительно, кому вообще придет в голову покупать для домашнего использования за 10 тысяч рублей убогую однопоточную тормозную и подвисающую Windows 7 - когда можно бесплатно скачать нормальный Linux #Servers #Linux ? Сколько бы не навязывали это решение в процессе обучения детей в школе. А кому придет в голову покупать за 4 тысячи долларов более ли менее укомплектованный сервер на Windows? Если можно абсолютно бесплатно скачать для физ-машины гораздо более надежную и быструю VmWare ESXi. А ведь использование MS SQL приводит при последующем расширении бизнеса и расширении IT-инфраструктуры именно к покупке Windows-сервера от Билла Гейста и установке билогейтсовской платформы (Windows 7) на клиентские машины. Все остальные СУБД устроены так, что не заставляют покупать Windows - только MS SQL задуман так, чтобы вовлекать клиента в дальшейшие покупки чего-либо у Билла Гейтса.
Поэтому довольно часто мои друзья, партнеры и заказчики просят освободить их от MS SQL Server хотя бы постепенно, от отдельных компонентов MS SQL Server:
Принимая во внимание изложенные обстоятельства, хотя большинство моих проектов сделаны именно на MS SQL - объективности ради я включил MS SQL в свой перечень продуктов, которые я считаю абсолютным злом - Осторожно Microsoft #Microsoft . Вашему вниманию также предлагается Сравнительный анализ производительности MS SQL Server 2008, PostgreSQL 8.4, MySQL 5.1 #Sql #Sql .
|
В принципе, если подумать, то даже MySQL (хоть он и не имеет такой производительности как MS SQL Enterprise и тем более PostgreSQL) имеет множество неоспоримых преимуществ перед MS SQL - например задания SQL JOB и репликация в нем работают в бесплатной версии, а у билогейтсовского сервера это платный функционал. В MySQL без проблем можно вызвать из одной процедуры другую, чего почему-то нельзя делать в MS SQL. MySQL позволяет хранить небольшие базы непосредственно в памяти (тип хранения Memory) - что работает несравненно быстрее, чем единственно возможный способ хранения данных в MS SQL - небольшой текущий кэш в ОЗУ, остальное на дисках. Таких преимуществ немало, вплоть до удобных языковых конструкций типа LIMIT, полезных функций типо COMPRESS или полного дампирования базы c содержимым в текстовом виде. Если бы было наоборот - MS SQL Enterprise полностью бесплатный, а кроссплатформенный MySQL стоил бы какие-то деньги - вот тогда надо было бы призадуматься!
Поэтому вы тоже можете воспользоваться My SQL в любых своих проектах на .NET и ASP.NET - Используем MySQL вместо MS SQL в проектах на ASP.NET #AspNetClassic #Sql .
- (2024) My ticket lottery engine based on SQL CTE procedure. #Sql #NodeBackend #JavascriptProjects
- (2022) SQL CTE expression to obtain Docker parent image. #Docker #Linux #Sql
- (2022) About connection with EF Core and Pomelo provider for MySQL (GetProcessList, EF Core connection count, Setup Max MySQL Connection count. Separate connection for Attributes, Calculate connection for API). #EfCodeFirst #Task
- (2022) MySQL Kvm hosting management Db with tracking changing by triggers. #NetCoreBackend #Ssl #Kvm
- (2022) CheckDBNull, RawSqlQuery, ExecRDR, RawSqlQueryAsync, ExecNonQueryAsync (with transaction)- amazing extension for working with data. #Sql #NetCoreBackend #EfCodeFirst
- (2022) Working with MySQL Blob. #NetCoreBackend #Sql
- (2021) Setup MariaDB on Ubuntu server (remote access, user privileges, upload database) #Linux #Sql
- (2020) Deploy data to dockerized MySQL and MariaDB) #Docker #Sql #Servers
- (2020) Transform Database from MsSQL to MySQL (Net Core EF DbFirst, Scaffold-DbContext, Read Db Schema, Move Users and data, EF SQL trace)) #Sql #EfCodeFirst #WinDesktop
- (2018) Налаштування сервера для проєкту Bravo. #Cloud
- (2011) Пример создания SOAP/WSDL-вебсервиса c MySQL. #WebApiServer
- (2012) Move Database file in MySQL and MsSQL #Sql
- (2010) Избавляемся от базы стандартных пользователей ASP.NET на MS SQL - пример ASP.NET сайта на MySQL. #Microsoft #AspNetClassic
- (2010) ADO.NET обвязка для работы с MySQL в ASP.NET-сайтах под Windows. #AspNetClassic #Linux
|
|
В десктопных однопользовательских программах очень удобно использовать SQLite.
|
Но некоторые проекты я делаю в NoSQL СУБД: