Казалось бы все уже давно разжевано, однако об одном интересном факте мало кто знает -- если кластерный индекс уникальный, то при создании неуникальных некластерных индексов, ключ кластерного индекса будет не только на листовом уровне дерева, но и в промежуточных узлах.
Об этом подробно написала Kalen Delaney в своем блоге:
Не пересказывая г-жу Дилани, отмечу только, что это приводит к интересному эффекту -- при наличии уникального кластерного индекса по полю X и неуникального некластерного индекса по полю Y, для запроса вида
select ... where Y = @param1 and X = @param2
при использовании некластерного индекса, index seek будет по обоим полям -- Y, X, а не только по Y. Если же этот индекс сделать уникальным, то, как и ожидается, ключ кластерного индекса будет только на листовом уровне, и index seek будет только по Y.
Dealing with huge amounts of data and SSAS? Have you ever tried parallel transactional incremental partitions processing? Odd enough but in this typical (at least to me and my team) scenario AMO generates invalid XMLA-script (because in this case all < Bindings > tags must be outside of the < Process > tag). As a result, you will get an exception.
However, it is easy to fix – let’s move all < Bindings > out of the < Process > command (I know, this code is far from perfect, feel free to refactor):
Начиная с версии 2005, в MSSQL появился серьезный ETL-инструмент, пришедший на смену DTS – SSIS. SSIS содержит массу встроенных трансформаций, но и их иногда бывает недостаточно. Что делать в таком случае? Нет ничего проще! Можно написать код на C# и использовать его в компоненте ScriptTransformation. А если этот код используется в нескольких пакетах, и может быть в других частях приложения? Есть два подхода – мой любимый copypaste (очень хорошо подходит, если вам платят за количество строк кода), или создание сборки и использование ее в пакетах и приложениях. За описанием технологии copypaste отправляю интересующихся читателей в документацию по MSWindows и в книгу “CopyPaste – TowardsaBrighterFuture” издательства BangalorePress, а здесь рассмотрим менее очевидный и более тернистый подход с использованием customassemblies.
Plagiarism detection using Microsoft SQL Server Platform
Vladislav Shcherbinin
AmericanUniversity of Nigeria
Lamido Zubairu way, Yola township by-pass, PMB 2250, Yola, Nigeria
vladislav.scherbinin@gmail.com
Sergey Butakov
SolBridge International School of Business, 151-13 Samsung 1-Dong, Dong-gu, Daejeon, 300-814, South Korea
butakov@solbridge.ac.kr
Abstract:The paper presents an approach for fast plagiarism detection using Microsoft SQL Server platform in a large corpus of documents. The approach was used for participation in the first international plagiarism detection competition that was held as a part of PAN’09 workshop. The main advantages of the proposed approach are its high precision, good performance and readiness for deployment into a production environment with relatively low cost of the required third party software. The approach uses fingerprinting-based algorithms to compare documents and Levenstein’s metric to markup plagiarized fragments in the texts.
Уж сколько за последние годы написано об оптимизации sql-запросов, а вопросы на sql.ru те же самые -- все же работало, и как-то вдруг перестало?! Heelp!
Начинаю серию статей об оптимизации запросов, где попробую простым язык объяснить, как же работает оптимизатор запросов, и как сделать так, чтобы все было быстро, не гадая при этом на кофейной гуще. Может быть удастся помочь хоть кому-то...
Писалось два года назад для одного американского клиента, может кому еще пригодится. Замечания/дополнения – verywelcome!
PSMSSQL 2000, но многие вещи применимы и для 2005/2008
vladislav.scherbinin@gmail.com Revisions history: v.1.0. Created by Vlad A. Scherbinin 01/07/07 v.1.1. Modified by Vlad A. Scherbinin 01/09/07
This document describes the common patterns and guidelines for convenient coding and development of the T-SQL code. It is strongly advised to follow these recommendations, because they incorporate industry best-practices and knowledge got by trial-and-error method. Читать дальше...
Начиная с версии 2005, MicrosoftSQLServer позволяет разрабатывать хранимые процедуры и функции не только на T-SQL, но и на разных языках платформы .NET. В этой статье мы рассмотрим создание функций для сжатия данных в MSSQL.
Данный подход я использовал в своей системе поиска плагиата “TheCrot” (), чтобы немного обойти ограничение ExpressEdition на размер базы данных (4 GB).
Я работаю в , преподаю разные дисциплины в Computer Science и Software Engineering. С первых дней столкнулся с серьезной проблемой — жуткий уровень жульничества среди студентов. Cheating здесь, к сожалению, норма жизни — начиная со школы, заканчивая правительством.
Дабы облегчить жизнь себе и коллегам (и несколько усложнить студентам), написал софт, который можно скачать вот здесь:
Там же есть и документация. Предназначено для преподавателей/ученых и т.д. Искать может либо по локальной БД документов, либо по Интернету.
Поставляется в двух вариантах — облегченная версия (без SQL Server Express), и полная (с SQL Server Express соответственно). Если у вас уже есть SQL Server, и вы знаете как там чего, качайте облегченную версию.
PS Всем приславшим критичный баг — лицензия в подарок! :)
PPS На всякий случай — достаточно ресурсоемкая система, в качестве хранилища используется MS SQL Express 2005, может отжирать довольно много памяти, но потом вернет, обещал по-крайней мере.
Использование веб-служб в MicrosoftSQLServerIntegrationServices на примере получения курсов валют с сайта ЦБ РФ
Сайт ЦБ РФ предоставляет в виде веб-служб различную полезную информацию, которая может пригодиться в ваших информационных системах. Список веб-служб можно найти по адресу.
В этой статье мы рассмотрим использование служб интеграции MicrosoftSQLServer для периодического получения курсов валют.
When you need to quickly generate a large set of test data, it is very handy to use a trick with newid() function and master.sys.objects (master..sysobjects) table.
For example:
insert into dbo.test ( amount , order_date) select top 100000 abs(checksum(newid())) % 20 /* random number 0..19*/ , dateadd(dd, abs(checksum(newid())) % 365, '20000101') /* random date within year 2000*/ from master.sys.objects s1, master.sys.objects s2, master.sys.objects s3
There are many myths about clustered index. One of them is that when clustered index exists on the table, the database engine doesn't use IAM pages anymore to retrieve data, it uses doubly-linked list of pages. Also one of my favorite authors — Khen Henderson mentioned that. This is just partially true. I found that in the read uncommitted isolation level, SQL Server still uses IAM to retrieve data.
During testing of SP4 for MS SQL 2k I've found the bug in such critical place as backup/restore subsystem — if you put a database into readonly mode and then backup up the log, you'll be unable to restore this log at some point of time or savepoint — database will come into 'suspected' state. This bug also exists in the previous versions of MS SQL 2k. It is not fixed yet. Guys from MS let me to share this info.