MSSQL

Пример сценария отправки SMS в Oktell, который был создан в одном банковском проекте. Схема следующая:
Используем Terrasoft XRM, который проинтегрирован с АБС «SCROOGE». Информация о движение банковских платежей попадает в Terrasoft посредством шлюзовой таблицы и Linked Server. Служебный сценарий Oktell каждые 5 секунд проверяет наличие новых записей в таблице, если такие обнаружены — происходит отправка SMS сообщения. Сценарий проверяет состояние SMS, обновляет его в Terrasoft и в SCROOGE.

Служебный сценарий отправки SMS
Служебный сценарий отправки SMS

Служебный сценарий отправки SMS (пример)

Необходимо выполнить резервное копирование по расписанию на установленном SQL Express. К большому сожалению JOBs нету 🙁 Воспользуемся Batch файлом и запускаем его по расписанию ( Windows расписанию или nnCron! 😉 )

Для SQL Server 2005 или 2008 берем sqlcmd.exe, а для SQL Server 2000 — osql.exe
Пишим батник:

@ECHO OFF

sqlcmd -Q "BACKUP DATABASE [myDB] TO  DISK = N'D:\myDB.bak' " -Slocalhost\SQLEXPRESS -dmyDB -E -oD:\Output.txt

@ECHO ON

Запускаем! У нас должна создаться резервная копия базы [myDB] на диске D:\myDB.bak, а в файле D:\Output.txt — результат выполнения команды. Все!

Здесь детали использования!

Если нужно быстро узнать каким пользователям какие права доступа установлены к таблице в базе Microsoft SQL, можно воспользоватся запросом:

SELECT dp.NAME AS principal_name,
           dp.type_desc AS principal_type_desc,
           o.NAME AS object_name,
           p.permission_name,
           p.state_desc AS permission_state_desc
   FROM    sys.database_permissions p
   LEFT    OUTER JOIN sys.all_objects o
   ON     p.major_id = o.OBJECT_ID
   INNER   JOIN sys.database_principals dp
   ON     p.grantee_principal_id = dp.principal_id
   WHERE o.NAME = 'tbl_Bank'

Suppose you’re given a date and asked to retrieve data for the whole week in which the given date falls. The example code produces the Week Start Date and Week End Date:

--Please set your appropriate values for @REPORT_DATE and @WEEK_BEGINING 

DECLARE @REPORT_DATE DATETIME, @WEEK_BEGINING VARCHAR(10)
SELECT @REPORT_DATE = '2004-09-21T00:00:00'
SELECT @WEEK_BEGINING = 'MONDAY'

IF @WEEK_BEGINING = 'MONDAY' 
    SET DATEFIRST 1 
ELSE IF @WEEK_BEGINING = 'TUESDAY' 
    SET  DATEFIRST 2 
ELSE IF @WEEK_BEGINING = 'WEDNESDAY'
    SET  DATEFIRST 3 
ELSE IF @WEEK_BEGINING =  'THURSDAY'
    SET  DATEFIRST 4 
ELSE IF @WEEK_BEGINING =  'FRIDAY'
    SET  DATEFIRST 5 
ELSE IF @WEEK_BEGINING =  'SATURDAY'
    SET  DATEFIRST 6 
ELSE IF @WEEK_BEGINING =  'SUNDAY'
    SET  DATEFIRST 7 


DECLARE @WEEK_START_DATE DATETIME, @WEEK_END_DATE DATETIME
--GET THE WEEK START DATE
SELECT  @WEEK_START_DATE = @REPORT_DATE - (DATEPART(DW,  @REPORT_DATE) - 1) 

--GET THE WEEK END DATE
SELECT  @WEEK_END_DATE = @REPORT_DATE + (7 - DATEPART(DW,  @REPORT_DATE))

PRINT 'Week Start: ' + CONVERT(VARCHAR, @WEEK_START_DATE)
PRINT 'Week End: ' + CONVERT(VARCHAR, @WEEK_END_DATE)

The above code produces the following result:

Week Start: Sep 20 2004 12:00AM — Which is Monday
Week End: Sep 26 2004 12:00AM — Which is Sunday

Целые день пытался корректно загрузить файл в Microsoft SQL в Blob Data Field. И вот, решение найдено! Что бы Вам потом не пришлось много времени потратить на это, рассказываю:

$FileData = addslashes(fread(fopen($filePath, "rb"), filesize($filePath)));

Вот так мы преобразуем файл, а дальше — обычный INSERT в базу!