Avatar billede goose Nybegynder
25. juli 2005 - 16:54 Der er 28 kommentarer og
2 løsninger

Fra Access til MSSQL

Jeg er ved at forsøge at gå fra Access til MSSQl og bruger Access som front-end.

Det virker fint nok.

Jeg har så derefter importeret tabellerne fra min oprindelige Accessdatabase til MSSQLdatabasen.

Er dette den rigtige måde at gøre det på ?

Jeg har nemlig et problem med, at hente data fra en kolonne i databasen som hedder "content".

Den melder ingen fejl, men den viser bare ingen data.

Hvis jeg kigger på tabellen, så er kolonnen "content" af datatypen ntext med en længde på 16.
I min access var den af typen notat.

Findes der en oversigt over datatyperne i MSSQL ?

/Goose
Avatar billede terry Ekspert
25. juli 2005 - 16:58 #1
Try looking in Books Online which comes with SQL Server
Avatar billede terry Ekspert
25. juli 2005 - 17:00 #2
If you look at the date in SQL Server is there NO data in the field?
Avatar billede goose Nybegynder
25. juli 2005 - 17:01 #3
terry >> jo, der er data i feltet og jeg har ikke SQL server men bruger Access som front-end.

/Goose
Avatar billede terry Ekspert
25. juli 2005 - 17:03 #4
and you can not see the data in Access?

You have SQL Server as the backend (data) and Access as the frontend (forms etc.)?
Avatar billede terry Ekspert
25. juli 2005 - 17:04 #5
Taken from Books Online

Data Types
In Microsoft® SQL Server™, each column, local variable, expression, and parameter has a related data type, which is an attribute that specifies the type of data (integer, character, money, and so on) that the object can hold. SQL Server supplies a set of system data types that define all of the types of data that can be used with SQL Server. The set of system-supplied data types is shown below.

User-defined data types, which are aliases for system-supplied data types, can also be defined. For more information about user-defined data types, see sp_addtype and Creating User-defined Data Types.

When two expressions that have different data types, collations, precision, scale, or length are combined by an operator:

The data type of the resulting value is determined by applying the rules of data type precedence to the data types of the input expressions. For more information, see Data Type Precedence.


If the result data type is char, varchar, text, nchar, nvarchar, or ntext, the collation of the result value is determined by the rules of collation precedence. For more information, see Collation Precedence.


The precision, scale, and length of the result depend on the precision, scale, and length of the input expressions. For more information, see Precision, Scale, and Length.
SQL Server provides data type synonyms for SQL-92 compatibility. For more information, see Data Type Synonyms.

Exact Numerics
Integers
bigint

Integer (whole number) data from -2^63 (-9223372036854775808) through 2^63-1 (9223372036854775807).

int

Integer (whole number) data from -2^31 (-2,147,483,648) through 2^31 - 1 (2,147,483,647).

smallint

Integer data from 2^15 (-32,768) through 2^15 - 1 (32,767).

tinyint

Integer data from 0 through 255.

bit
bit

Integer data with either a 1 or 0 value.

decimal and numeric
decimal

Fixed precision and scale numeric data from -10^38 +1 through 10^38 –1.

numeric

Functionally equivalent to decimal.

money and smallmoney
money

Monetary data values from -2^63 (-922,337,203,685,477.5808) through 2^63 - 1 (+922,337,203,685,477.5807), with accuracy to a ten-thousandth of a monetary unit.

smallmoney

Monetary data values from -214,748.3648 through +214,748.3647, with accuracy to a ten-thousandth of a monetary unit.

Approximate Numerics
float

Floating precision number data from -1.79E + 308 through 1.79E + 308.

real

Floating precision number data from -3.40E + 38 through 3.40E + 38.

datetime and smalldatetime
datetime

Date and time data from January 1, 1753, through December 31, 9999, with an accuracy of three-hundredths of a second, or 3.33 milliseconds.

smalldatetime

Date and time data from January 1, 1900, through June 6, 2079, with an accuracy of one minute.

Character Strings
char

Fixed-length non-Unicode character data with a maximum length of 8,000 characters.

varchar

Variable-length non-Unicode data with a maximum of 8,000 characters.

text

Variable-length non-Unicode data with a maximum length of 2^31 - 1 (2,147,483,647) characters.

Unicode Character Strings
nchar

Fixed-length Unicode data with a maximum length of 4,000 characters.

nvarchar

Variable-length Unicode data with a maximum length of 4,000 characters. sysname is a system-supplied user-defined data type that is functionally equivalent to nvarchar(128) and is used to reference database object names.

ntext

Variable-length Unicode data with a maximum length of 2^30 - 1 (1,073,741,823) characters.

Binary Strings
binary

Fixed-length binary data with a maximum length of 8,000 bytes.

varbinary

Variable-length binary data with a maximum length of 8,000 bytes.

image

Variable-length binary data with a maximum length of 2^31 - 1 (2,147,483,647) bytes.

Other Data Types
cursor

A reference to a cursor.

sql_variant

A data type that stores values of various SQL Server-supported data types, except text, ntext, timestamp, and sql_variant.

table

A special data type used to store a result set for later processing .

timestamp

A database-wide unique number that gets updated every time a row gets updated.

uniqueidentifier

A globally unique identifier (GUID).
Avatar billede arne_v Ekspert
25. juli 2005 - 17:06 #6
SQLServer TEXT eller NTEXT må svare til Access Memo (Notat i danske versioner)

og den har ikke nogen længde angivelse !
Avatar billede goose Nybegynder
25. juli 2005 - 17:10 #7
terry >> jo, jeg kan godt se at der er data i feltet hvis jeg ser databasen igennem Access men jeg kan ikke trække dem ud på min hjemmeside. Øvrige felter i databasen kan jeg godt få vist, det er tilsyneladende kun den kolonne der hedder "content" jeg ikke kan få vist.

arne_v >> jamen så burde den del jo være iorden, men hvis jeg bruger Access så skriver den en feltlængde på 16.

/Goose
Avatar billede terry Ekspert
25. juli 2005 - 17:14 #8
ntext can contain large amounts of data nd arte theefore held OUTSIDE of th actual databse (blob file) so the 16 bytes (characters) only hold the address of the

I have JUST converted an Access datavase with memo fields and the get converted to ntext and I can also see the data!

Have you converted to ADP (data project) or MDB?
Avatar billede terry Ekspert
25. juli 2005 - 17:16 #9
...jeg kan ikke trække dem ud på min hjemmeside.!!!!

This is because the field is TOO BIG! You need to use another method for this!

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthgetchunk.asp
Avatar billede goose Nybegynder
25. juli 2005 - 17:27 #10
terry >> jeg er ked af det, men jeg forstår det altså ikke helt.

Såvidt jeg ved, så skulle der ikke da ikke være forskel på hvordan man trækker data fra henholdsvis access og mssql.

Det med getchunk fatter jeg heller ikke en meter af.

jeg bruger normalt denne metode:

indhold = rs("content")

response.write indhold

Hvordan skal jeg så gøre ?

/Goose
Avatar billede goose Nybegynder
25. juli 2005 - 17:31 #11
Det er muligt at feltet er for stort, men kan man ikke bare få den til at vise alt indholdet i tabellen ?

/Goose
Avatar billede terry Ekspert
25. juli 2005 - 19:26 #12
well as I dont normally make web applications I cant say which method you should use, but I do know that many others have had the same problem as you  mention and this is because of the size of a memo/nchar field

Have you tried using get

indhold = rs("content").GetChunk(1000)

for example!
Avatar billede terry Ekspert
25. juli 2005 - 19:35 #13
rs("contentcontent").GetChunk(len(rs("content")))
Avatar billede goose Nybegynder
25. juli 2005 - 21:58 #14
Der er flere ting der ikke fungerer, så jeg sidder og funderer over om jeg har gjort det rigtigt ?

Det jeg rent praktisk har gjort er følgende:

Connectet til min MSSQL database på webhotellet via Access.

Der har jeg så importeret tabellerne fra en lokal MDB fil (incl. indhold)

Nu sidder jeg så og er i tvivl om hvorvidt det er den rigtige måde at importerer på ?

Det der undrer mig er endvidere, at alle siger man blot skal ændre sin connectionstreng hvis man skifter til MSSQL og så kan jeg ikke forstå det bøvl jeg har :o(

/Goose
Avatar billede arne_v Ekspert
25. juli 2005 - 22:01 #15
best case er at man kun skal ændre connection string

der er altid muligheder for database specifikt SQL og andre problemer
Avatar billede goose Nybegynder
25. juli 2005 - 22:04 #16
Ja, men nu består min database ikke af noget specielt, tekstfelter, notatfelter m.v. så ikke noget hokus pokus der.

Ved du om det er den rigtige måde at importerer på ?

/Goose
Avatar billede arne_v Ekspert
25. juli 2005 - 22:17 #17
hvad returnerer rs("content") ? tom streng ? fejl ?

og hvordan set query ud ?
Avatar billede goose Nybegynder
25. juli 2005 - 22:27 #18
rs("content") returnerer intet og ingen fejl.

Min SQL:

SQL = "select * from TBL_tabel where id=" & request.querystring("id")
set rs = conn.execute(SQL)

indhold = rs("content")

o.s.v.

/Goose
Avatar billede arne_v Ekspert
25. juli 2005 - 22:34 #19
jeg prøver lige hos mig selv
Avatar billede arne_v Ekspert
25. juli 2005 - 22:52 #20
jeg kan ikke genskabe det

jeg opretter tabellen med:

CREATE TABLE texttest (
    id INTEGER PRIMARY KEY,
    content NTEXT
)
GO
INSERT INTO texttest VALUES (1,N'abc')
GO
INSERT INTO texttest VALUES (2,N'def')
GO

og kører følgende side:

<%
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=SQLOLEDB;Data Source=ARNEPC3;Initial Catalog=test;Integrated Security=SSPI;"
s = "1 3 5 7 "
s = s + s + s + s + s + s + s + s
s = s + s + s + s + s + s + s + s
s = s + s + s + s + s + s + s + s
s = s + s + s + s + s + s + s + s
con.Execute("INSERT INTO texttest VALUES (3,N'" & s & "')")
Set rs = con.Execute("SELECT content FROM texttest WHERE id = 3")
Response.Write rs("content")
Set rs = Nothing
Set con = Nothing
%>

og det virker fint ...
Avatar billede goose Nybegynder
25. juli 2005 - 22:58 #21
Ja, men det er måske ved min import fra access det går galt. Jeg vil jo gerne importerer mine tabeller inkl. indhold og derfor har jeg ikke oprettet mine tabeller med CREATE TABLE.

Jeg har ikke adgang til Enterprise eller lign. software .........

jeg fatter ikke en bjælde og må nok se i øjnene at det er for stor en mundfuld til mig :o(

/Goose
Avatar billede arne_v Ekspert
25. juli 2005 - 23:01 #22
jeg har svært ved at tro at det gør en forskel hvordan tabellen er oprettet

men det undrer mig især at du ikke får en fejl
Avatar billede goose Nybegynder
25. juli 2005 - 23:04 #23
ja jeg ved det sg* ikke, men det virker ihvertfald ikke.

Læg et svar, så deler dig og terry for jeres ulejlighed.

/Goose
Avatar billede arne_v Ekspert
25. juli 2005 - 23:05 #24
ok
Avatar billede terry Ekspert
26. juli 2005 - 08:30 #25
Your original question!
"Jeg er ved at forsøge at gå fra Access til MSSQl og bruger Access som front-end."

But here there was NO mention that you want to connect to an SQL Server on the web!

IN Access there is a tool for "upsizing" from Access to SQL Server. (Tools+Database utilities+Upsizing Wizard menu) When you use this you can choose to make an Access Data Project (ADP) instead of an MDB. Is this what you have used?
Avatar billede goose Nybegynder
26. juli 2005 - 08:34 #26
Nej det kan jeg godt se, det var min fejl men ja, det er til SQL server på nettet.

Nu bruger jeg den danske udgave af access og er ikke helt sikker på hvilken wizard du mener, men ja, jeg har fået oprettet en adp fil som jeg blot åbner for at få adgang til MSSQL databasen.

/Goose
Avatar billede terry Ekspert
26. juli 2005 - 09:22 #27
And you are using Access as the front end, NOT asp?
Avatar billede goose Nybegynder
26. juli 2005 - 09:24 #28
Jeg bruger asp til at vedligeholde mine data med men jeg bruger access til at ændre i databasestrukturen.

Som du måske kan læse, så er det mine første forsøg med MS SQL så måske jeg bare ikke forstår forskellen på disse to databasetyper.

/Goose
Avatar billede terry Ekspert
26. juli 2005 - 10:07 #29
if you just accept that ntext is the same a s a memo then you cant go wrong. So if you create any new fields which would be memo in Access then you use ntext in SQL Server.

If you have used the following line of code to read a memo field in ASP then you should still be able to use it.

indhold = rs("content")

but as I have mentioned before, the GetChunk method of a recordset is NORMALLY necessary to read memo/image fields. So if you rae having problems then I suggest you try it.

and thanks for the points
Avatar billede goose Nybegynder
26. juli 2005 - 10:59 #30
Ja, jeg må prøve det med getchunck.

/Goose
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I dag 10:28 PDFEngine Af barth i Andet software
I går 22:40 Butte indhold i celler Af lurup i Excel
I går 15:24 Power Query Af djsimonsen i Excel
I går 14:43 Hvis ikke på liste, tilføj værdier til liste Af TheLibrarian i Excel
I går 11:33 Windows 11 Af ranni i Windows