블로그 이미지
따뜻한 코드 만들기 리본매냐

카테고리

분류 전체보기 (34)
.NET (6)
Database (5)
Daily life (11)
세미나 후기 (0)
마음의 지식 (7)
코드 (1)
Python (1)
외출 (3)
Total39,744
Today1
Yesterday9

달력

« » 2019.02
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28    

공지사항

태그목록

MySQL 문자열 길이 구하는 함수

1. LENGTH() : 길이를 bytes로 나타낸다.

SELECT LENGTH('한글') -> 6
SELECT LENGTH('abc') -> 3


2. CHAR_LENGTH() : 글자의 수를 나타낸다.

SELECT CHAR_LENGTH('한글') -> 2
SELECT CHAR_LENGTH('abc') -> 3


3. BIT_LENGTH() : 길이를 bit로 나타낸다.

SELECT BIT_LENGTH('한글a') -> 56
SELECT BIT_LENGTH('한글')   -> 48


** 참고로 MySQL에서는 UTF-8일 경우 한글은 3bytes, 영어는 1bytes 처리하네요 ^^



Posted by 리본매냐

날짜타입 길이

smalldatetime   4bytes

datetime           8bytes

date                 3bytes

date 타입은 SQL 2008 에 추가된 타입입니다.


참고 : http://technet.microsoft.com/en-us/library/ms187819.aspx

Posted by 리본매냐

1. 현재값 확인

SELECT current_id = IDENT_CURRENT('Table_Name')


2. 초기화

DBCC CHECKIDENT('TableName', RESEED, 0)


3. 재설정

DBCC CHECKIDENT('TableName', RESEED)

현재 row 수 기준으로 초기화




Posted by 리본매냐

SQL 원격디비 연결

Database / 2011.03.15 00:15


원격디비 연결을 하기 위한 몇가지 방법
1. Openrowset

Syntax
 
OPENROWSET
( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password'
   | 'provider_string' }
   , {   [ catalog. ] [ schema. ] object
       | 'query'
     }
   | BULK 'data_file' ,
       { FORMATFILE = 'format_file_path' [ <bulk_options> ]
       | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} )

<bulk_options> ::=
   [ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]
   [ , ERRORFILE = 'file_name' ]
   [ , FIRSTROW = first_row ]
   [ , LASTROW = last_row ]
   [ , MAXERRORS = maximum_errors ]
   [ , ROWS_PER_BATCH = rows_per_batch ]
   [ , ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) [ UNIQUE ]

>> SQL Server Native Client OLE DB Provider
      SELECT a.*
      FROM OPENROWSET('SQLNCLI',
                                      'Server=Seattle1;
                                      Trusted_Connection=yes;',
                                      'SELECT GroupName, Name, DepartmentID
                                       FROM AdventureWorks2008R2.HumanResources.Department
                                       ORDER BY GroupName, Name'
) AS a;
 
>> Microsoft OLE DB Provider For Jet
    SELECT CustomerID, CompanyName
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                   'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';
                   'admin';'',Customers);

>> Inner Join

USE Northwind  ;
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c
   INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0',
   'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'', Orders)   
   AS o
   ON c.CustomerID = o.CustomerID ;
GO

>> Bulk insert file data into a varbinary(max) column
USE AdventureWorks2008R2;
GO
CREATE TABLE myTable(FileName nvarchar(60),
  FileType nvarchar(60), Document varbinary(max));
GO

INSERT INTO myTable(FileName, FileType, Document)
   SELECT 'Text1.txt' AS FileName, '.txt' AS FileType, *
   FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document;
GO

>> From a txt file

USE AdventureWorks2008R2;
GO
CREATE TABLE myTable(FileName nvarchar(60),
  FileType nvarchar(60), Document varbinary(max));
GO

INSERT INTO myTable(FileName, FileType, Document)
   SELECT 'Text1.txt' AS FileName,
      '.txt' AS FileType,
      * FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document;
GO

이런 식으로 해주면 된다~
아래와 같이 미리 설정이 되어있어야한다..




2.  OpenQuery (LinkedServer 추가)

1) Linkedserver를 추가한다.

exec sp_addlinkedserver
@server = 'drcs',
@srvproduct = '',
@provider = 'SQLOLEDB',
@datasrc = '111.111.111.1',
@provstr='',
@catalog= ''

2) 로그인
sp_addlinkedsrvlogin 'drcs', 'false', null, 'ID', 'passwords'

3) 쿼리 
select * from [drcs].drcs.dbo.customer
OpenRowSet를 이용하는 것 보다 쿼리가 간편해진다.
Posted by 리본매냐
(MS-SQL)
프로그램 수행중 갑자기
A severe error occurred on the current command. The results, if any, shold be discarded.
(현재 명령에서 서버 오류가 발생했습니다. 결과가 잇을 경우 이를 무시해야 합니다.)
라는 오류가 발생했다..


해당 테이블을 조회해보니
메시지 824, 수준 24, 상태 2, 줄 1
SQL Server에서 일관성 기반의 논리적인 I/O 오류가 검색되었습니다: 보호 옵션이 잘못되었습니다.. 파일 'D:\Data\Dxxxx.mdf'의 오프셋 0x0000002dd84000에서 데이터베이스 ID 7에 있는 페이지 (1:93890)의 읽기 중 이 오류가 발생했습니다. 자세한 내용은 SQL Server 오류 로그 또는 시스템 이벤트 로그의 추가 메시지에서 확인할 수 있습니다. 이는 데이터베이스 무결성을 위협하는 심각한 오류 상태이며 즉시 수정해야 합니다. 전체 데이터베이스 일관성 검사(DBCC CHECKDB)를 완료하십시오. 이 오류는 다양한 요인으로 인해 발생할 수 있습니다. 자세한 내용은 SQL Server 온라인 설명서를 참조하십시오.


와 같은 메세지를 ..
문제의 해결은 데브피아에서 찾았습니다..


단일 모드로 변경 후
ALTER DATABASE Dxxxx SET single_user

DBCC CHECKTABLE(ODLINF, REPAIR_ALLOW_DATA_LOSS)

REPAIR_FAST 또는 REPAIR_REBUILD 를 먼저 사용한 후 해결이 되지 않을 경우
REPAIR_ALLOW_DATA_LOSS 옵션을 쓰는게 좋다고 하는군요..

ALTER DATABASE  Dxxxx SET multi_user



Posted by 리본매냐

최근에 달린 댓글

최근에 받은 트랙백

글 보관함