백엔드 데이터베이스:
[마이크로소프트 액세스]
그리고
[마이크로소프트 SQL 서버]
교체 후 ASP 코드는 수정이 필요한 일부 위치에 주의를 기울여야 합니다.
[1] 연결 문제(예)
[마이크로소프트 액세스]
constr = "DBQ=c:dataclwz.mdb; DRIVER={Microsoft Access Driver(*.mdb)}"
[마이크로소프트 SQL 서버]
constr = "DRIVER={SQL Server};SERVER=host;DATABASE=mydata;uid=sa;pwd="
[2] 유사한 함수(예)
[1]DATEDIFF(datepart, startdate, enddate)
"datepart" 매개변수 옵션은 다음과 같습니다.
설정 설명————————————
[마이크로소프트 액세스]
1년이네
분기 q
월 m
y년의 일수
낮
요일 w
저우 와우
시간 시간
분
초
[Microsoft SQL Server]
년 yy, yyyy
분기 qq, q
월 mm, m
일년 중 하루, y
일 dd, d
주 주, ww
시간 아
분 mi, n
두 번째 ss, s
millisecond ms
---------
기본적으로는 동일하지만 작성시 주의사항은,
[Microsoft Access] datediff('d',enddate,'2004/08/01')와 같은 따옴표를 추가합니다.
[Microsoft Sql Server]는 필요하지 않습니다. 예: datediff(d,enddate,'2004/08/01')
[2][Microsoft Access]는 cstr과 같은 데이터 유형 변환 기능을 사용할 수 있습니다.
[Microsoft Sql Server]에서는 다음과 같은 변환 또는 캐스팅 기능을 사용합니다.
변환(varchar,[금액]) 등
[3][마이크로소프트 SQL 서버]
현재 시간을 얻으려면 getdate 등을 사용하십시오.
[3] 명령문
[마이크로소프트 SQL 서버]
사용 가능
사례
언제
언제
...
또 다른
끝
진술, 동안
[마이크로소프트 액세스]
지원되지 않습니다.
[Microsoft Access]도 between 문을 지원하지 않습니다.
[Microsoft SQL Server]는 다음과 같이 작성할 수 있습니다.
[날짜] @date1과 @date2 사이
[4] 쿼리 테이블
[마이크로소프트 SQL 서버]
3개 이상의 테이블을 조인하여 쿼리할 수 있으며,
[마이크로소프트 액세스]
쿼리용으로는 테이블 2개만 조인할 수 있는 것으로 보입니다(당국 확인 예정).
그리고 [Microsoft Sql Server]는 "*=" 및 "=*" 커넥터를 사용할 수 있습니다. [5] 0으로 나누는 문제
[마이크로소프트 액세스]
제수가 0인 경우 해당 레코드는 자동으로 폐기되며,
[마이크로소프트 SQL 서버]
오류가 보고되고 쿼리가 종료됩니다. 코드 삭제:
[마이크로소프트 액세스]
다음과 같이 작성할 수 있습니다: delete * from [table]
[마이크로소프트 SQL 서버]
다음과 같이만 쓸 수 있습니다: delete from [table]
오류가 보고되는 경우가 많습니다.
______________________________________________________
현재 날짜:
[마이크로소프트 액세스]
사용 날짜()
[마이크로소프트 SQL 서버]
getdate()를 사용하면 데이터베이스가 유형을 변경할 수 있는 경우 ASP 코드에 다음을 추가할 수 있습니다.
inStr(constr,"Microsoft Access") > 0이면
sqlstr=[마이크로소프트 액세스][sql 코드]
또 다른
sqlstr=[마이크로소프트 SQL 서버][sql 코드]
종료하면
(constr--연결 문자열)
이렇게 하면 데이터베이스가 변경되더라도 데이터베이스 쿼리 및 업데이트 코드를 변경할 필요가 없습니다.
또한, access에는 true와 false 필드 레코드가 있는데 sql에는 smallint만 있습니다. 따라서 access에 "field name=true"가 있으면 sql에서는 "field name=1"로 변경해야 합니다.
인터넷에 있는 대부분의 무료 ASP 프로그램은 액세스 데이터베이스를 사용합니다. 하지만, 접속 데이터베이스는 중소규모의 독립형 데이터베이스 시스템으로서, 방문량이 많고 데이터량이 많은 웹사이트 애플리케이션에 사용될 경우 과부하가 걸리는 경우가 많습니다. 일반적으로 액세스 데이터베이스의 성능은 50M을 초과하면 크게 저하되기 시작하며 100M을 초과하면 오류 및 느린 작동 문제가 더욱 두드러지게 됩니다. 동왕 7.0 이후처럼 프로그램 관점에서 성능 향상을 위해 최선을 다해 최적화할 수는 있지만 근본적으로 문제를 해결할 수는 없습니다.
현시점에서는 아마도 Microsoft의 SQL Server 데이터베이스를 사용하는 것이 가장 유력한 방법일 것입니다. 물론 Oracle, MySQL 등 다른 데이터베이스를 사용할 수도 있지만, 둘 다 Microsoft 제품이므로 SQL Server로 다시 작성하는 방법이 될 것입니다. 가장 노동력을 절약하는 방법이어야 합니다.
1. 재작성 전제조건:
시스템에 SQL Server2000이 설치되어 있고 SP3 패치가 적용되어 있으며 Office 제품군의 Access가 설치되어 있고 일반 텍스트 편집을 지원하고 줄 번호 표시가 있는 편집기를 사용하는 것이 좋습니다. 물론 FrontPage2003도 사용할 수 있지만 이전 버전에서는 줄 번호 표시가 그다지 사용하기 쉽지 않았습니다.
개인 능력 요구 사항: 기본 ASP 구문을 이해하고 데이터베이스 작업에 액세스하며 SQL Server Enterprise Manager의 기본 작업을 수행할 수 있어야 합니다.
2. 일반적으로 데이터베이스 준비에는 두 가지 상황이 있습니다
.
1. 프로그램은 SQL 데이터베이스 형식을 제공합니다. MDF 파일이 있거나 SQL 데이터베이스를 생성하기 위한 SQL 스크립트 파일(접미사 .sql)이 제공됩니다.
mdf 파일이 있는 경우 Enterprise Manager를 사용하여 직접 첨부할 수 있습니다. sql 스크립트 파일이 제공되면 Enterprise Manager를 사용하여 직접 sql 데이터베이스를 생성한 후 Enterprise Manager에서 쿼리 분석기를 사용하여 실행하면 됩니다. 데이터베이스 테이블을 생성하는 스크립트입니다.
이렇게 구축된 데이터베이스는 기본적으로 다시 작성할 필요가 없습니다.
2. 대부분은 SQL 데이터베이스나 스크립트 파일을 제공하지 않습니다. 이 부분은 우리 게시물이 해결하는 주요 문제이기도 합니다. 일반적으로 이러한 프로그램은 액세스 데이터베이스를 제공하므로 Enterprise Manager를 사용하여 액세스 데이터베이스를 가져올 수 있습니다. 가져온 후에는 다음 사항을 다시 작성해야 합니다.
원래 액세스와 비교하여 다음 부분을 다시 작성하십시오.
(1) SQL 데이터베이스 테이블에는 자동 필드가 없으므로 액세스 시 원래 자동 필드는 일반 필드로 변환되며 1씩 증가하여 식별 유형으로 수동으로 변경해야 합니다.
(2) 모든 시간 필드에 대해 기본값이 정의된 경우 now() 여야 하며 getdate() 로 변경해야 합니다.
(3) 원본 필드의 기본값은 일반적으로 자동으로 도입되지 않으며 원본 테이블의 필드에 대해 수동으로 추가해야 합니다.
(4) 데이터베이스가 다르기 때문에 변환 후 많은 필드 유형의 액세스 및 SQL이 변경됩니다. 예를 들어 원래 "여부" 필드는 비트 또는 정수로 변환되고, 메모 필드는 긴 텍스트로 변환되고, 텍스트 필드는 다음과 같이 변환됩니다. varchar 등으로 변환하면 일반적으로 프로그램 작동에 영향을 미치지 않습니다. 문제가 있는 경우 아래 프로그램 재작성 섹션에서 논의하겠습니다.
(5) 저장 프로시저를 사용하는 For SQL 프로그램을 사용하려면 프로그램 자체에서 SQL 데이터베이스를 생성하는 방법이 있어야 합니다. 자체 SQL 데이터베이스 파일이 있거나 그렇지 않은 경우 SQL 스크립트를 사용하십시오. access 데이터베이스 방법은 저장 프로시저를 생성할 수 없으므로 이를 포기하는 것이 좋습니다. SQL 프로그램 버전의 경우 동일한 버전의 For Access 프로그램을 사용하고, 액세스 데이터베이스를 가져온 후 다음 재작성 방법을 사용하여 SQL 버전으로 변경합니다. 스스로 프로그래밍하세요.
3. 연결 문자열을 다시 작성하려면
동왕의 access 부분과 SQL 부분을 각각 참조하시기 바랍니다.
DimConnStr
IsSqlDataBase = 1인 경우
'sql 데이터베이스 연결 매개변수: 데이터베이스 이름, 사용자 비밀번호, 사용자 이름, 연결 이름(로컬 로컬 사용, 해외 IP 사용)
희미한 SqlDatabaseName, SqlPassword, SqlUsername, SqlLocalName
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(로컬)"
ConnStr = "공급자 = Sqloledb; 사용자 ID = " & SqlUsername & "; 비밀번호 = " & SqlPassword & "; 초기 카탈로그 = " & SqlDatabaseName & "; 데이터 소스 = " & SqlLocalName & ";"
또 다른
'무료 사용자의 경우 데이터 디렉토리의 데이터베이스 주소와 데이터베이스 이름을 적절하게 수정하십시오. 예를 들어 dvbbs6.mdb를 dvbbs6.asp로 변경하십시오.
'http://www.downcodes.com/
Db = "데이터/fengerqingqing.mdb"
ConnStr = "공급자 = Microsoft.Jet.OLEDB.4.0;데이터 소스 = " & Server.MapPath(db)
종료 조건
오류 발생 시 다음 재개
conn = Server.CreateObject("ADODB.Connection") 설정
conn.open ConnStr
물론 SQL을 사용하면 액세스 문을 삭제할 수 있습니다. 즉, else 이후와 오류가 발생하기 이전에 다시 시작하면 다음과 같이 됩니다:
Dim ConnStr
'sql 데이터베이스 연결 매개변수: 데이터베이스 이름, 사용자 비밀번호, 사용자 이름, 연결 이름(로컬 로컬 사용, 해외 IP 사용)
희미한 SqlDatabaseName, SqlPassword, SqlUsername, SqlLocalName
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(로컬)"
ConnStr = "공급자 = Sqloledb; 사용자 ID = " & SqlUsername & "; 비밀번호 = " & SqlPassword & "; 초기 카탈로그 = " & SqlDatabaseName & "; 데이터 소스 = " & SqlLocalName & ";"
오류 발생 시 다음 재개
conn = Server.CreateObject("ADODB.Connection") 설정
conn.open ConnStr은
다음과 같이 더 간결하게 작성할 수도 있습니다.
conn = Server.CreateObject("ADODB.Connection") 설정
conn.open "공급자 = Sqloledb; 사용자 ID = sa; 비밀번호 = 1234567; 초기 카탈로그 = dvbbs7; 데이터 소스 = (로컬);"
실제 상황에 따라 데이터베이스 이름, 데이터 소스, 사용자 및 비밀번호를 다시 작성하십시오.
4. 프로그램 재작성
두 가지 상황이 있습니다:
1. 운이 좋아서 For SQL 프로그램을 구하게 된다면 위의 데이터베이스 생성과정에서 문제가 없다면 기본적으로 프로그램은 실행될 수 있습니다. 수정 내용은 이 게시물에서 자세히 다루지 않습니다.
2. 대부분의 경우 프로그램 자체가 For Access 입니다. For SQL 프로그램과의 차이점은 주로 프로그램에서 사용되는 SQL 쿼리문입니다. SQL 쿼리 문은 데이터베이스 응용 프로그램에서 없어서는 안될 부분입니다. For SQL이든 For Aceess이든 프로그램에서 사용하는 구문은 거의 동일하지만 프로그램을 보편적이지 않게 만드는 것은 이러한 차이점입니다. 우리에게 필요한 것 수정의 주요 내용입니다. 일반적으로 수정이 필요한 부분은 다음과 같습니다.
(1) 시간 함수의 문제: SQL 데이터베이스의 시간 함수는 액세스의 함수와 다릅니다. 가장 일반적인 함수는 현재 시간을 가져오는 함수이고 SQL은 getdate()입니다. 따라서 where 절에서 now()가 사용되는 경우 getdate()로 변경해야 합니다. now() 함수는 데이터베이스에서 사용되지 않는 모든 now() 함수에서도 사용해야 합니다. 쿼리나 실행문은 변경하지 마세요.
(2) 시간 비교 함수: datediff('d','time1','time2') 이는 액세스 쿼리에 사용되는 형식입니다. SQL에서는 이러한 인용 부호를 동시에 제거해야 합니다. 시간 형식 이후에도 이 형식을 제거해야 합니다. 마찬가지로 이는 sql 문도 참조하며 asp 문은 그대로 유지되어야 합니다.
(3) 널값의 표현 : 접근시 널값을 판단하는 것은 일반적으로 ="" 여부로 표현되는데, SQL에서는 이것이 에러 문제가 발생하거나 프로그램이 정상적으로 실행되지 않는 경우가 많다면 이를 변경할 수 있다. 이렇게 판단하려면 :여기서 (이름은 null입니다)
(4) 참, 거짓 값 판단 : 접근 시 =true, =false를 사용하여 판단할 수 있으나 SQL에서는 오류가 발생하므로 SQL 쿼리나 실행문에서는 이러한 판단을 =1로 변경해야 한다. 각각 =0입니다. 참고: 일부 프로그램에서는 = "true"라고 쓰지만 따옴표로 인해 이 필드는 문자 유형이므로 =1로 변경할 수 없으며 그대로 유지하십시오.
위의 내용은 다시 작성해야 하는 가장 일반적인 부분이며, 덜 일반적인 부분이 있는 경우 여기에 답장하여 논의할 수 있습니다.
5. 프로그램 디버깅
위의 재작성 작업은 프로그램 소스코드를 직접 검색하여 이루어질 가능성이 낮고, 다 찾아보기 어렵기 때문에 줄번호가 있는 편집기를 사용하는 것이 좋습니다.
제가 채택하는 방법은 일반적으로 데이터베이스 재작성이 완료된 후 프로그램을 직접 디버깅하는 것입니다. 오류가 발생한 후 오류 메시지를 보고 해당 파일의 코드 라인을 찾습니다. 그러나 근본 원인이 아닌 경우가 많습니다. 예를 들어, 오류 문은 conn.execute(sql) 이지만 이 문장 자체는 잘못된 것이 아닙니다. 오류의 원인은 내부의 SQL 문자열입니다. 그런 다음 SQL 문자열이 어떻게 생성되는지 찾아보고 그에 따라 수정하세요. 위에서 언급한 프로그램 수정 방법을 참조하세요.
데이터베이스를 가져온 후에는 자동으로 추가된 필드를 다시 작성해야 하며 모든 숫자 유형의 길이를 늘려야 합니다.
모든 기본값이 손실됩니다. 주로 숫자 유형과 날짜 유형입니다.
now(), time(), date()를 모두 getdate()로 변경해야 합니다.
모든 datediff('d', time1, time2)는 datediff(day, time1, time2)로 변경되어야 합니다.
일부 true/false 유형을 사용할 수 없어 1/0으로 변경해야 할 수도 있습니다.
Remark 유형은 캐스트(열을 varchar로)를 통해 사용해야 합니다.
CursorType을 1로 변경해야 합니다. 즉, 데이터베이스를 열 때 첫 번째 숫자 매개변수를 1로 지정해야 합니다. 그렇지 않으면 레코드가 완전히 표시되지 않을 수 있습니다.
isnull(rowname)을 rowname = null 로 변환할
때ACCESS 데이터베이스의 자동 번호 지정 유형은 SQL Server에 의해 자동 번호 지정 유형으로 설정되지 않습니다. 자동 번호 지정을 나타내려면 SQL 생성 문에 ID를 추가해야 합니다.
변환 중에 SQL SERVER는 날짜 관련 필드에 대해 기본적으로 smalldatetime 유형을 사용합니다. datetime 유형은 smalldatetime 유형보다 범위가 크기 때문에 이를 datetime 유형으로 변경하는 것이 가장 좋습니다. smalldatetime 유형을 사용하면 변환이 실패하는 경우가 있지만 datetime 유형을 사용하면 변환이 성공합니다.
두 데이터베이스를 작동하는 데 사용되는 SQL 문은 정확히 동일하지 않습니다. 예를 들어 ACCESS 데이터베이스에서 레코드를 삭제할 때는 "delete * from user where id=10"을 사용하고, SQL SERVER 데이터베이스를 삭제할 때는 다음을 사용합니다. delete user where id=10".
날짜 함수는 다릅니다. ACCESS 데이터베이스를 처리할 때는 date(), time() 등의 함수를 사용할 수 있습니다. 그러나 SQL SERVER 데이터베이스를 처리할 때는 datediff, dateadd 등의 함수만 사용할 수 있습니다. 사용할 수 있지만 날짜( ), 시간() 및 기타 기능은 사용할 수 없습니다.
ACCESS 데이터베이스 처리 시 cstr() 함수와 같은 일부 VB 함수는 sql 문에서 직접 사용할 수 있지만, SQL SERVER 데이터베이스 처리 시에는 사용할 수 없다.
다음 표에서는 Microsoft Access 데이터베이스(Microsoft Access 데이터베이스: 특정 주제나 목적과 관련된 테이블, 쿼리 또는 양식과 같은 데이터 및 개체의 모음입니다. Microsoft Jet 데이터베이스 엔진은 데이터를 관리하는 데 사용됩니다.) 및 Microsoft Access 프로젝트(Microsoft Access 프로젝트: Microsoft SQL Server 데이터베이스에 연결하고 클라이언트/서버 응용 프로그램을 만드는 데 사용되는 Access 파일입니다. 프로젝트 파일에는 데이터나 데이터 기반 개체(예: 테이블 또는 뷰)가 포함되어 있지 않습니다. 데이터 유형의 필드 특성 데이터 유형에는 부울, 정수, Long, 통화, 단일, 이중, 날짜, 문자열 및 변형(기본값)이 포함됩니다.
Microsoft Access 데이터 유형 SQL Server 데이터 유형 Yes/No(예/아니오 데이터 유형: 예 또는 아니요, True 또는 False 등) 가능한 값이 두 개만 있는 필드에 사용되는 필드 데이터 유형입니다. Null 값은 그렇지 않습니다. 허용됩니다.) 비트(비트 데이터 형식: Access 프로젝트에서 1 또는 0의 값을 저장하는 데이터 형식입니다. 1과 0 이외의 정수 값을 허용하지만 항상 1로 해석합니다.)
숫자(숫자 데이터 유형: 수학 연산에 사용되는 숫자 데이터에 사용되는 Microsoft Access 데이터베이스의 필드 데이터 유형입니다. 그러나 화폐 값을 표시하거나 계산하려면 통화 데이터 유형을 사용해야 합니다.)(바이트) tinyint(tinyint 데이터 형식: Access 프로젝트의 1바이트(8비트) 데이터 형식으로, 0~255 범위의 정수를 저장하는 데 사용됩니다.)
숫자(정수) smallint(smallint 데이터 형식: Access 프로젝트의 2바이트(16비트) 데이터 형식으로, -2^15(-32,768)에서 2^15-1(32,767) 사이의 숫자를 저장합니다.)
숫자(긴 정수) int(int 데이터 유형: Access 프로젝트의 4바이트(32비트) 데이터 유형으로, -2^31(-2,147,483,648)과 2^31-1(2,147,483,647) 사이의 값을 저장합니다. .)
숫자(단정밀도 부동 소수점 유형) 실수(실수 데이터 유형: Access 프로젝트에서는 정밀도 7자리의 대략적인 숫자 데이터 유형, 1.18E-38에서 3.40E+38까지의 양수 값, 음수 값 값 범위는 대략 -1.18E-38부터 -3.40E+38까지이며 0일 수도 있습니다.
(동등한 데이터 형식 없음) bigint(bigint 데이터 형식: Access 프로젝트의 8바이트(64비트) 데이터 형식, -2^63(-9,223,372,036,854,775,808)과 2^63-1(9,223,372,036,854,775,807) 사이에 저장됨).
숫자(배정밀도 부동 소수점) float(부동 데이터 유형: Access 프로젝트에서 정밀도 15자리의 대략적인 숫자 데이터 유형. 저장되는 양수 값의 범위는 대략 2.23E-308에서 1.79E+ 308이며, 음수 값 범위는 대략 -2.23E-308에서 -1.79E+308까지이며 0일 수도 있습니다.
통화("통화" 데이터 형식: 통화 관련 계산이나 정확도가 매우 중요한 고정 소수점 계산에 사용되는 Microsoft Access 데이터베이스의 데이터 형식) 돈(통화 데이터 형식: Access 프로젝트에서 통화를 저장하는 데 사용됨 데이터 값 유형, 값 범위는 -922,337,203,685,477.5707 ~ 922,337,203,685,477.5807이며 정확도는 통화 단위의 1만분의 1입니다.)
smallmoney(smallmoney 데이터 유형: Access 프로젝트에서 통화 값을 저장하는 데이터 유형, 값 범위 - 214,748.3648부터 214,748.3647까지이며, 정확도는 화폐 단위의 1만분의 1입니다. 작은 돈 값이 표시되면 소수점 이하 두 자리로 반올림됩니다.
Decimal/Numerical(십진수 데이터 유형(Access 데이터베이스): -10^38-1부터 10^38-1까지의 값을 저장하는 데 사용되는 정확한 숫자 데이터 유형입니다. 숫자 범위(최대 총 자릿수) 및 정밀도(소수점)는 오른쪽의 최대 자릿수를 지정합니다. 총 자릿수) 및 정밀도(소수점 이하 최대 자릿수)를 지정할 수 있습니다.)
숫자(숫자 데이터 유형: Access 프로젝트에서 -10^38의 값을 갖는 정밀 숫자 데이터 유형
)-1 ~ 10^38-1. 숫자 범위(최대 총 자릿수) 및 정밀도(소수점 이하 최대 자릿수)를 지정할 수 있습니다.
날짜/시간("날짜/시간" 데이터 유형: 날짜 및 시간 정보를 저장하는 데 사용되는 Access 데이터베이스의 데이터 유형) datetime(날짜/시간 데이터 유형: Access 프로젝트에서 날짜 및 시간의 데이터 유형, 범위는 1753 9999년 1월 1일부터 12월 31일까지 정확도는 300분의 1초, 즉 3.33밀리초)
smalldatetime(smalldatetime 데이터 형식: Access 프로젝트의 날짜 및 시간 데이터 형식이며 정확도는 datetime 시간만큼 좋지 않습니다. 데이터 값 범위는 1900년 1월 1일부터 2079년 6월 6일까지이며 정확도는 1분입니다.
AutoNumber("AutoNumber" 데이터 유형: 새 레코드가 테이블에 추가될 때 각 레코드에 대한 고유 번호를 자동으로 저장하는 Microsoft Access 데이터베이스의 필드 데이터 유형입니다. 세 가지 유형이 생성될 수 있습니다. 번호: 시퀀스 번호, 난수 및 동기 복제 ID ) (증가) int (int 데이터 형식: Access 프로젝트의 4바이트(32비트) 데이터 형식, -2^31(-2,147,483,648) 및 2 ^31-1(2,147,483,647)에 저장됨) ( ID 특성이 정의됨)
텍스트("텍스트" 데이터 유형: Microsoft Access 데이터베이스의 필드 데이터 유형입니다. "텍스트" 데이터 유형은 최대 255자 또는 FieldSize 속성에 지정된 더 적은 수의 문자를 포함할 수 있습니다.) (n) varchar( n ) (varchar(n) 데이터 형식: 최대 길이가 8,000ANSI 문자인 Access 프로젝트의 가변 길이 데이터 형식입니다.)
nvarchar(n) (nvarchar(n) 데이터 형식: Access 프로젝트에서 A 가변 길이 데이터 유니코드 문자는 최대 4,000개의 유니코드 문자를 포함할 수 있으며 문자당 2바이트를 차지하며 모든 국제 문자를 지원합니다.
설명("설명" 데이터 유형: Microsoft Access 데이터베이스의 필드 데이터 유형입니다. "설명" 필드는 최대 65,535자를 포함할 수 있습니다.) 텍스트(텍스트 데이터 유형: Access 프로젝트의 가변 길이 데이터 유형, 저장할 수 있음) 최대 2^31-1(2,147,483,647)자, 기본 길이는 16자입니다.
OLE 개체("OLE 개체" 데이터 유형: Access 데이터베이스에 연결되거나 포함(삽입)될 수 있는 다른 응용 프로그램에서 생성된 개체에 사용되는 필드의 데이터 유형 중 하나입니다.) 이미지(이미지 데이터 유형: Access에서 프로젝트에서 , 가변 길이 데이터 유형은 최대 2^31-1(2,147,483,647)바이트의 이진 데이터를 저장할 수 있습니다. 이미지 데이터 유형은 그림, 문서, 사운드, 파일과 같은 BLOB(Binary Large Object)를 저장하는 데 사용됩니다. 컴파일된 코드.)
동기 복제 ID(GUID(Globally Unique Identifier)라고도 함): Access 데이터베이스에서 동기 복제를 위한 고유 식별자를 설정하는 데 사용되는 16바이트 필드입니다. GUID는 복제본, 복제본 세트, 테이블, 레코드 및 기타 개체를 식별하는 데 사용됩니다. Access 데이터베이스, GUID는 동기 복제 ID(GUID)를 나타냅니다.) Uniqueidentifier(고유 식별자 데이터 유형: Access 프로젝트에서는 16바이트 GUID(Globally Unique Identifier)입니다.) (SQL Server 7.0 이상 버전에만 적용 가능)
hyperlink("하이퍼링크" 데이터 유형: 하이퍼링크 주소를 저장하는 Access 데이터베이스 필드의 데이터 유형. 주소는 최대 4개 부분으로 구성될 수 있으며 다음 구문 형식으로 작성됩니다: displaytext#address#subaddress#.) char(char 데이터 유형 : Access 프로젝트에서 최대 8,000개의 ANSI 문자를 포함할 수 있는 고정 길이 데이터 형식입니다. ),
nchar(nchar 데이터 형식: Access 프로젝트에서 최대 4,000개의 유니코드 문자를 포함할 수 있는 고정 길이 데이터 형식입니다. 문자는 2바이트를 차지하며 모든 국제 문자를 지원합니다.), varchar, nvarchar(Hyperlink 특성이 Yes로 설정됨)
(해당하는 데이터 형식 없음) varbinary(varbinary 데이터 형식: 최대 8,000바이트의 이진 데이터를 저장할 수 있는 Access 프로젝트의 가변 길이 데이터 형식입니다.)
(동등한 데이터 형식 없음) smallint (smallint 데이터 형식: Access 프로젝트의 2바이트(16비트) 데이터 형식, -2^15(-32,768) 및 2^15-1(32,767) 사이에 저장됨).
(동등한 데이터 형식 없음) timestamp(timestamp 데이터 형식: Access 프로젝트에서 행이 삽입되거나 업데이트될 때마다 자동으로 업데이트되는 데이터 형식입니다. timestamp 열의 값은 datetime 데이터가 아니라 binin(8) 또는 varbinary입니다. (8), 데이터 수정 순서를 나타냄).
(동등한 데이터 유형 없음) charnchar
(동등한 데이터 형식 없음) sql_variant(sql_variant 데이터 형식: text, ntext, image, timestamp 및 sql_variant 형식 이외의 여러 데이터 형식의 값을 저장하는 Access 프로젝트의 데이터 형식입니다. 열, 매개 변수, 변수에서 사용되거나 사용자 정의 함수의 반환 값).
(동등한 데이터 유형 없음) 사용자 정의(사용자 정의 데이터 유형: Microsoft SQL Server 데이터베이스에서 열에 포함된 데이터의 유형 정의는 기존 시스템 데이터 유형 정의를 사용하여 사용자가 정의할 수 있습니다. 규칙 및 기본값은 사용자 정의 데이터 형식에만 바인딩될 수 있습니다. )
참고 Access 프로젝트 또는 SQL Server 데이터베이스에서 접두사 "n"은 "국가/지역"을 의미하며, 이는 이 데이터 형식이 유니코드를 사용함을 의미합니다. . Access 데이터베이스에서는 모든 텍스트 열이 기본적으로 유니코드를 지원합니다.
ACCESS를 SQL로 변환할 때 주의해야 할 문제
2006-2-13 16:01:20
많은 친구들이 SQL2000 데이터베이스 프로그래밍 방법을 사용하고 싶어하지만 ACCESS를 배우고 있고 SQL에 대한 이해가 부족하다는 사실로 인해 어려움을 겪고 있습니다. 여기서는 ACCESS를 SQL2000으로 변환하는 방법과 주의 사항을 알려드립니다. , 우선, 제가 말하는 것은 ACCESS2000과 SQL2000 사이의 변환입니다. 다른 변환은 아직 시도하지 않았습니다. 더 많은 실험을 해보시길 바랍니다. 방법이 있을 것입니다.
2. 변환방법
1. "제어판" 아래 "관리 도구"에서 "데이터베이스 소스"를 엽니다.
2. "추가"를 클릭하여 새 데이터 소스를 추가하고 선택 열에서 "DriverdomicrosoftAccess"를 선택합니다.
(*.mdb)"가 완료되면 상자가 나타납니다.
"Database Source"에 쓰고 싶은 이름을 입력하세요. 저는 "ABC"라고 이름을 붙였는데, 입력할 필요가 없다는 뜻입니다. 그런 다음 아래 선택을 누르세요. 데이터베이스 주소와 선택 사항을 찾은 다음(먼저 ACCESS 데이터베이스를 백업하십시오) 확인하십시오.
여기서 데이터 소스가 생성되고 남은 것은 변환뿐입니다.
3. SQL2000 Enterprise Manager를 열고, 데이터베이스를 입력하고, 새로운 빈 데이터베이스 "ABC"를 생성합니다.
4. 새로 생성된 데이터베이스를 선택하고 마우스 오른쪽 버튼을 클릭한 후 "모든 작업"에서 "데이터 가져오기"를 선택하고 "다음"을 클릭하여 계속합니다.
5. 데이터베이스 소스 드롭다운 목록에서 "DriverdoMicrosoft Access(*.mdb)"를 선택합니다. "사용자/시스템 DSN"에서 방금 추가한 "ABC"를 선택하고 "다음"을 클릭합니다.
6. "목적"은 수정할 필요가 없습니다. (일반적으로 자신의 컴퓨터 "로컬", 권한이 작동할 수 있는지 확인하기 위해 서버 주소 또는 LAN 주소를 선택할 수도 있습니다), "WINDOWS 인증 사용"은 사용을 의미합니다. 자신의 시스템 관리자 ID 작업을 위해 "SQL ID 작업 확인 사용"을 사용하여 웹 사이트 작업을 수행할 수 있으며 후자를 권장합니다.
7. "SQL ID 작업 확인 사용"을 선택한 후 사용자 이름과 비밀번호를 입력합니다. 저는 시스템 기본 번호인 "sa"와 "****"를 선택하고 새로 생성된 "ABC"를 선택합니다. " 다음 단계";
8. 이 단계에는 "데이터 소스에서 테이블 및 뷰 복사"와 "쿼리 명령을 사용하여 전송할 데이터 지정"이라는 두 가지 단일 선택 사항이 있습니다. 전자를 선택하고 계속하려면 "다음"을 클릭하십시오.
9. 자신의 ACCESS 데이터베이스 테이블이 여기에 표시됩니다. "모두 선택"을 클릭하고 다음 단계로 이동합니다.
10. "DTS 가져오기/내보내기 마법사", "지금 실행"이 선택되어 있는지 확인하고 "다음"을 클릭하세요.
11. 계속하려면 "마침"을 누르십시오.
12. 이 단계에서는 데이터를 SQL2000으로 가져오는 것을 볼 수 있습니다. "XXX 테이블을 데이터베이스로 성공적으로 가져왔습니다"라는 메시지가 나타나고 모든 테이블 앞에 녹색 체크 표시가 있으면 모든 데이터가 가져왔음을 의미합니다. 성공적으로 가져오기가 진행되는 동안 문제가 발생하거나 테이블 앞에 빨간색 *이 표시되면 해당 테이블을 성공적으로 가져오지 못했다는 의미입니다.
3. . 데이터 수정
1. SQL2000에는 "자동 번호 매기기"가 없으므로 "자동 번호 매기기"로 설정한 필드는 비어 있지 않은 필드가 됩니다. 이 경우 해당 필드를 수동으로 수정하고 "표시"에 대해 "예"를 선택해야 합니다. 시드는 "1"이고 증분은 "1"입니다.
2. 또한 ACCESS2000을 SQL2000으로 변환한 후 원래 속성이 "yes/no"인 필드는 비어 있지 않은 "bit"로 변환됩니다. 이때 원하는 속성으로 수정해야 합니다.
3. 또한, ACCESS와 SQL에는 많은 차이점이 있습니다.
4. 관련분야 이슈
1. ACCESS 데이터베이스에서 자동 번호 지정 유형을 변환할 때 sqlserver가 자동 번호 지정 유형으로 설정하지 않았습니다. 자동 번호 지정을 나타내려면 SQL 생성 문에 ID를 추가해야 합니다.
2. 변환 중에 SQLSERVER는 날짜 관련 필드에 대해 기본적으로 smalldatetime 유형을 사용합니다. datetime 유형이 smalldatetime 유형보다 범위가 크기 때문에 datetime 유형으로 변경하는 것이 가장 좋습니다. 이런 상황이 발생했습니다. smalldatetime 유형을 사용할 때는 변환이 실패했지만, datetime 유형을 사용할 때는 변환이 성공했습니다.
3. 두 데이터베이스를 작동하는 데 사용되는 SQL 문은 정확히 동일하지 않습니다. 예를 들어 ACCESS 데이터베이스에서 레코드를 삭제할 때는 "delete*fromuserwhereid=10"을 사용하고, SQLSERVER 데이터베이스를 삭제할 때는 "deleteuserwhereid="를 사용합니다. 10".
4. 날짜 함수는 다릅니다. ACCESS 데이터베이스 처리 시에는 date(), time() 등의 함수를 사용할 수 있지만, SQLSERVER 데이터베이스 처리 시에는 datediff, dateadd 등의 함수만 사용할 수 있습니다. (), 시간( ) 및 기타 기능.
5. ACCESS 데이터베이스 처리 시 cstr() 함수와 같은 일부 VB 함수는 sql 문에서 직접 사용할 수 있지만, SQLSERVER 데이터베이스 처리 시에는 사용할 수 없습니다.
5. 관련문 문제, 자동 추가 필드를 다시 작성해야 합니다. 액세스에 자주 사용되는 자동 번호 매기기 필드는 mssql로 가져온 후 자동 증가하는 int가 아닙니다. 가져온 자동 번호 매기기 필드의 "no"를 "yes" 및 "seed"로 변경해야 합니다. 과 "증분량"이 모두 "1"이면 자동 숫자가 됩니다.
모든 기본값이 손실됩니다. 주로 숫자 유형과 날짜 유형
now(), time(), date()를 모두 getdate()로 변경해야 합니다.
모든 datediff('d',time1,time2)는 datediff(day,time1,time2)로 변경되어야 합니다.
모든 datediff('ww',time1,time2)는 datediff(week,time1,time2)로 변경되어야 합니다.
모든 datediff('d',time1,time2)는 datediff(day,time1,time2)로 변경되어야 합니다.
mssqlserver에는 접근할 수 없는 예약어가 많이 있습니다. mssql로 데이터를 가져올 때 문제가 발생합니다. mssql을 가져오면 이러한 필드(데이터베이스의 테이블 이름 포함)에 "[필드 이름]"이 자동으로 추가됩니다. 따라서 스크립트를 수정하고 해당 필드 이름(또는 테이블 이름)을 추가하거나 변경해야 합니다. mssql이 아닌 예약어에 대한 필드 이름
시간을 활용하기 위해 접근을 할 때 "select*fromaaaawhiletime="&now()" 같은 SQL 문을 사용하는 것은 누구나 좋아합니다. 그런데 mssql에는 "now()" 함수가 없고 "getdate()"를 사용하므로 "getdate()"를 사용합니다. , 모든 SQL 문에서 "now()"는 "getdate()"로 대체되어야 합니다.
ACCESS 데이터베이스 처리에서는 날짜 함수가 다릅니다. 날짜() 및 시간()과 같은 함수를 사용할 수 있지만
SQLSERVER 데이터베이스 처리에는 datediff, dateadd 등의 함수만 사용할 수 있으며, date(), time() 등의 함수는 사용할 수 없습니다.
변환 중에 SQLSERVER는 날짜 관련 필드에 대해 기본적으로 smalldatetime 유형을 datetime 유형으로 변경하는 것이 좋습니다.